home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-09-10 | 637.8 KB | 13,246 lines |
-
-
- Author's Note:
-
- This is version 2.2.2 of the book, "Linux Installation and Getting
- Started", formatted in plain ASCII for those readers without access
- to PostScript printers. This document was generated by a set of tools
- from LaTeX source, so there may be a number of formatting problems.
- This is not the "official" version of the book! Please see
- sunsite.unc.edu:/pub/Linux/docs/LDP/install-guide
- for PostScript, DVI, HTML, and other (nicely formatted) versions.
- If you have the ability to print the guide or view it on-line,
- I suggest you do so. This ASCII version is meant only for previewing
- purposes.
-
- This book may be freely distributed under certain conditions, and
- you can order a printed and bound copy from a number of publishers.
- The README file at the FTP site given above gives all the details.
-
- -- M. Welsh
-
-
-
-
-
-
-
-
-
-
-
-
-
- Linux Installation and Getting Started
- _______________________________________________________________________
- Copyright (c) 1992--1994 Matt Welsh
-
-
-
-
-
-
- Version 2.2.2, 11 February 1995.
-
- This book is an installation and new-user guide for the
- Linux system, meant for UNIX novices and gurus alike. Contained
- herein is information on how to obtain Linux, installation of the
- software, a beginning tutorial for new UNIX users, and an introduction
- to system administration. It is meant to be general enough to be
- applicable to any distribution of the Linux software.
-
- This book is freely distributable; you may copy and redistribute it
- under certain conditions. Please see the copyright and distribution
- statement on page x.
-
-
-
-
-
-
-
-
-
- Contents
-
-
-
-
- Preface vi
- Audience . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
- Organization . . . . . . . . . . . . . . . . . . . . . . . . . . vii
- Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . vii
- Credits and Legalese . . . . . . . . . . . . . . . . . . . . . . viii
- Documentation Conventions . . . . . . . . . . . . . . . . . . . . xi
- 1 Introduction to Linux 1
- 1.1 About This Book . . . . . . . . . . . . . . . . . . . . . . . 1
- 1.2 A Brief History of Linux . . . . . . . . . . . . . . . . . . 3
- 1.3 System Features . . . . . . . . . . . . . . . . . . . . . . . 5
- 1.4 Software Features . . . . . . . . . . . . . . . . . . . . . . 6
- 1.4.1 Basic commands and utilities . . . . . . . . . . . . . . 7
- 1.4.2 Text processing and word processing . . . . . . . . . . . 8
- 1.4.3 Programming languages and utilities . . . . . . . . . . . 11
- 1.4.4 The X Window System . . . . . . . . . . . . . . . . . . . 12
- 1.4.5 Networking . . . . . . . . . . . . . . . . . . . . . . . 14
- 1.4.6 Telecommunications and BBS software . . . . . . . . . . . 15
- 1.4.7 Interfacing with MS-DOS . . . . . . . . . . . . . . . . . 16
- 1.4.8 Other applications . . . . . . . . . . . . . . . . . . . 16
- 1.5 About Linux's Copyright . . . . . . . . . . . . . . . . . . . 18
- 1.6 The Design and Philosophy of Linux . . . . . . . . . . . . . 19
- 1.6.1 Hints for UNIX novices . . . . . . . . . . . . . . . . . 22
- 1.6.2 Hints for UNIX gurus . . . . . . . . . . . . . . . . . . 22
- 1.7 Differences Between Linux and Other Operating Systems . . . . 23
- 1.7.1 Why use Linux? . . . . . . . . . . . . . . . . . . . . . 23
- 1.7.2 Linux vs. MS-DOS . . . . . . . . . . . . . . . . . . . . 24
- 1.7.3 Linux vs. The Other Guys . . . . . . . . . . . . . . . . 25
- 1.7.4 Other implementations of UNIX . . . . . . . . . . . . . . 25
- 1.8 Hardware Requirements . . . . . . . . . . . . . . . . . . . . 27
- 1.8.1 Motherboard and CPU requirements . . . . . . . . . . . . 28
- 1.8.2 Memory requirements . . . . . . . . . . . . . . . . . . . 28
- 1.8.3 Hard drive controller requirements . . . . . . . . . . . 29
- 1.8.4 Hard drive space requirements . . . . . . . . . . . . . . 29
- 1.8.5 Monitor and video adapator requirements . . . . . . . . . 30
- 1.8.6 Miscellaneous hardware . . . . . . . . . . . . . . . . . 30
- 1.8.7 Ethernet cards . . . . . . . . . . . . . . . . . . . . . 31
- 1.9 Sources of Linux Information . . . . . . . . . . . . . . . . 32
- 1.9.1 Online documents . . . . . . . . . . . . . . . . . . . . 32
-
-
- i
-
-
- 1.9.2 Linux on the World Wide Web . . . . . . . . . . . . . . . 33
- 1.9.3 Books and other published works . . . . . . . . . . . . . 33
- 1.9.4 USENET newsgroups . . . . . . . . . . . . . . . . . . . . 34
- 1.9.5 Internet mailing lists . . . . . . . . . . . . . . . . . 36
- 1.10 Getting Help . . . . . . . . . . . . . . . . . . . . . . . . 37
-
- 2 Obtaining and Installing Linux 40
- 2.1 Distributions of Linux . . . . . . . . . . . . . . . . . . . 40
- 2.1.1 Getting Linux from the Internet . . . . . . . . . . . . . 41
- 2.1.2 Getting Linux from other online sources . . . . . . . . . 42
- 2.1.3 Getting Linux via mail order . . . . . . . . . . . . . . 42
- 2.1.4 Getting Slackware . . . . . . . . . . . . . . . . . . . . 43
- 2.2 Preparing to Install Linux . . . . . . . . . . . . . . . . . 50
- 2.2.1 Installation overview . . . . . . . . . . . . . . . . . . 50
- 2.2.2 Repartitioning concepts . . . . . . . . . . . . . . . . . 52
- 2.2.3 Linux partition requirements . . . . . . . . . . . . . . 52
- 2.2.4 Repartitioning your drives . . . . . . . . . . . . . . . 54
- 2.3 Installing the Linux software . . . . . . . . . . . . . . . . 56
- 2.3.1 Booting Linux . . . . . . . . . . . . . . . . . . . . . . 56
- 2.3.2 Drives and partitions under Linux . . . . . . . . . . . . 58
- 2.3.3 Creating Linux partitions . . . . . . . . . . . . . . . . 60
- 2.3.4 Creating the swap space . . . . . . . . . . . . . . . . . 63
- 2.3.5 Creating the filesystems . . . . . . . . . . . . . . . . 64
- 2.3.6 Installing the software . . . . . . . . . . . . . . . . . 65
- 2.3.7 Creating the boot floppy or installing LILO . . . . . . . 69
- 2.3.8 Additional installation procedures . . . . . . . . . . . 70
- 2.4 Postinstallation procedures . . . . . . . . . . . . . . . . . 70
- 2.5 Running Into Trouble . . . . . . . . . . . . . . . . . . . . 71
- 2.5.1 Problems with booting the installation media . . . . . . 72
- 2.5.2 Hardware problems . . . . . . . . . . . . . . . . . . . . 74
- 2.5.3 Problems installing the software . . . . . . . . . . . . 79
- 2.5.4 Problems after installing Linux . . . . . . . . . . . . . 81
- 3 Linux Tutorial 85
- 3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . 85
- 3.2 Basic UNIX Concepts . . . . . . . . . . . . . . . . . . . . . 86
- 3.2.1 Creating an account . . . . . . . . . . . . . . . . . . . 86
- 3.2.2 Logging in . . . . . . . . . . . . . . . . . . . . . . . 86
- 3.2.3 Virtual consoles . . . . . . . . . . . . . . . . . . . . 87
- 3.2.4 Shells and commands . . . . . . . . . . . . . . . . . . . 87
- 3.2.5 Logging out . . . . . . . . . . . . . . . . . . . . . . . 89
- 3.2.6 Changing your password . . . . . . . . . . . . . . . . . 89
- 3.2.7 Files and directories . . . . . . . . . . . . . . . . . . 89
- 3.2.8 The directory tree . . . . . . . . . . . . . . . . . . . 90
- 3.2.9 The current working directory . . . . . . . . . . . . . . 90
- 3.2.1 0Referring to home directories . . . . . . . . . . . . . 92
- 3.3 First Steps into UNIX . . . . . . . . . . . . . . . . . . . . 92
- 3.3.1 Moving around . . . . . . . . . . . . . . . . . . . . . . 92
- 3.3.2 Looking at the contents of directories . . . . . . . . . 93
- 3.3.3 Creating new directories . . . . . . . . . . . . . . . . 95
- 3.3.4 Copying files . . . . . . . . . . . . . . . . . . . . . . 96
-
-
- 3.3.5 Moving files . . . . . . . . . . . . . . . . . . . . . . 96
- 3.3.6 Deleting files and directories . . . . . . . . . . . . . 96
- 3.3.7 Looking at files . . . . . . . . . . . . . . . . . . . . 97
- 3.3.8 Getting online help . . . . . . . . . . . . . . . . . . . 97
- 3.4 Summary of Basic Commands . . . . . . . . . . . . . . . . . . 98
- 3.5 Exploring the File System . . . . . . . . . . . . . . . . . 100
- 3.6 Types of shells . . . . . . . . . . . . . . . . . . . . . . 105
- 3.7 Wildcards . . . . . . . . . . . . . . . . . . . . . . . . . 106
- 3.8 UNIX Plumbing . . . . . . . . . . . . . . . . . . . . . . . 108
- 3.8.1 Standard input and output . . . . . . . . . . . . . . . 108
- 3.8.2 Redirecting input and output . . . . . . . . . . . . . . 109
- 3.8.3 Using pipes . . . . . . . . . . . . . . . . . . . . . . 110
- 3.8.4 Non-destructive redirection . . . . . . . . . . . . . . 112
- 3.9 File Permissions . . . . . . . . . . . . . . . . . . . . . . 112
- 3.9.1 Concepts of file permissions . . . . . . . . . . . . . . 112
- 3.9.2 Interpreting file permissions . . . . . . . . . . . . . 113
- 3.9.3 Dependencies . . . . . . . . . . . . . . . . . . . . . . 114
- 3.9.4 Changing permissions . . . . . . . . . . . . . . . . . . 115
- 3.10 Managing file links . . . . . . . . . . . . . . . . . . . . 115
- 3.10.1 Hard links . . . . . . . . . . . . . . . . . . . . . . 115
- 3.10.2 Symbolic links . . . . . . . . . . . . . . . . . . . . 117
- 3.11 Job Control . . . . . . . . . . . . . . . . . . . . . . . . 117
- 3.11.1 Jobs and processes . . . . . . . . . . . . . . . . . . 117
- 3.11.2 Foreground and background . . . . . . . . . . . . . . . 118
- 3.11.3 Backgrounding and killing jobs . . . . . . . . . . . . 119
- 3.11.4 Stopping and restarting jobs . . . . . . . . . . . . . 121
- 3.12 Using the vi Editor . . . . . . . . . . . . . . . . . . . . 123
- 3.12.1 Concepts . . . . . . . . . . . . . . . . . . . . . . . 124
- 3.12.2 Starting vi . . . . . . . . . . . . . . . . . . . . . . 124
- 3.12.3 Inserting text . . . . . . . . . . . . . . . . . . . . 125
- 3.12.4 Deleting text . . . . . . . . . . . . . . . . . . . . . 126
- 3.12.5 Changing text . . . . . . . . . . . . . . . . . . . . . 127
- 3.12.6 Moving commands . . . . . . . . . . . . . . . . . . . . 128
- 3.12.7 Saving files and quitting vi . . . . . . . . . . . . . 128
- 3.12.8 Editing another file . . . . . . . . . . . . . . . . . 129
- 3.12.9 Including other files . . . . . . . . . . . . . . . . . 129
- 3.12.10 Running shell commands . . . . . . . . . . . . . . . . 130
- 3.12.11 Getting help . . . . . . . . . . . . . . . . . . . . . 130
- 3.13Customizing your Environment . . . . . . . . . . . . . . . . 130
- 3.13.1 Shell scripts . . . . . . . . . . . . . . . . . . . . . 131
- 3.13.2 Shell variables and the environment . . . . . . . . . . 132
- 3.13.3 Shell initialization scripts . . . . . . . . . . . . . 135
- 3.14 So You Want to Strike Out on Your Own? . . . . . . . . . . 135
-
- 4 System Administration 137
- 4.1 About Root, Hats, and the Feeling of Power . . . . . . . . 137
- 4.1.1 The root account . . . . . . . . . . . . . . . . . . . . 137
- 4.1.2 Abusing the system . . . . . . . . . . . . . . . . . . . 139
- 4.1.3 Dealing with users . . . . . . . . . . . . . . . . . . . 139
- 4.1.4 Setting the rules . . . . . . . . . . . . . . . . . . . 140
- 4.1.5 What it all means . . . . . . . . . . . . . . . . . . . 140
-
-
- 4.2 Booting the System . . . . . . . . . . . . . . . . . . . . 141
- 4.2.1 Using a boot floppy . . . . . . . . . . . . . . . . . . 141
- 4.2.2 Using LILO . . . . . . . . . . . . . . . . . . . . . . . 142
- 4.3 Shutting Down . . . . . . . . . . . . . . . . . . . . . . . 143
- 4.4 Managing Users . . . . . . . . . . . . . . . . . . . . . . . 144
- 4.4.1 User management concepts . . . . . . . . . . . . . . . . 144
- 4.4.2 Adding users . . . . . . . . . . . . . . . . . . . . . . 146
- 4.4.3 Deleting users . . . . . . . . . . . . . . . . . . . . . 146
- 4.4.4 Setting user attributes . . . . . . . . . . . . . . . . 146
- 4.4.5 Groups . . . . . . . . . . . . . . . . . . . . . . . . . 147
- 4.5 Archiving and Compressing Files . . . . . . . . . . . . . . 147
- 4.5.1 Using tar . . . . . . . . . . . . . . . . . . . . . . . 148
- 4.5.2 gzip and compress . . . . . . . . . . . . . . . . . . . 149
- 4.5.3 Putting them together . . . . . . . . . . . . . . . . . 149
- 4.6 Using Floppies and Making Backups . . . . . . . . . . . . . 151
- 4.6.1 Using floppies for backups . . . . . . . . . . . . . . . 151
- 4.6.2 Using floppies as filesystems . . . . . . . . . . . . . 151
- 4.7 Upgrading and Installing New Software . . . . . . . . . . . 152
- 4.7.1 Upgrading the kernel . . . . . . . . . . . . . . . . . . 153
- 4.7.2 Upgrading the libraries . . . . . . . . . . . . . . . . 154
- 4.7.3 Upgrading gcc . . . . . . . . . . . . . . . . . . . . . 155
- 4.7.4 Upgrading other software . . . . . . . . . . . . . . . . 156
- 4.8 Managing Filesystems . . . . . . . . . . . . . . . . . . . . 156
- 4.8.1 Mounting filesystems . . . . . . . . . . . . . . . . . . 156
- 4.8.2 Checking filesystems . . . . . . . . . . . . . . . . . . 158
- 4.9 Using a swap file . . . . . . . . . . . . . . . . . . . . . 159
- 4.10 Miscellaneous Tasks . . . . . . . . . . . . . . . . . . . . 160
- 4.10.1 System startup files . . . . . . . . . . . . . . . . . 160
- 4.10.2 Setting the hostname . . . . . . . . . . . . . . . . . 161
- 4.11 What To Do In An Emergency . . . . . . . . . . . . . . . . 162
- 4.11.1 Recovering using a maintenance diskette . . . . . . . . 162
- 4.11.2 Fixing the root password . . . . . . . . . . . . . . . 163
- 4.11.3 Fixing trashed filesystems . . . . . . . . . . . . . . 163
- 4.11.4 Recovering lost files . . . . . . . . . . . . . . . . . 164
- 4.11.5 Fixing trashed libraries . . . . . . . . . . . . . . . 164
-
- 5 Advanced Features 165
- 5.1 The X Window System . . . . . . . . . . . . . . . . . . . . 165
- 5.1.1 Hardware requirements . . . . . . . . . . . . . . . . . 166
- 5.1.2 Installing XFree86 . . . . . . . . . . . . . . . . . . . 168
- 5.1.3 Configuring XFree86 . . . . . . . . . . . . . . . . . . 170
- 5.1.4 Filling in video card information . . . . . . . . . . . 178
- 5.1.5 Running XFree86 . . . . . . . . . . . . . . . . . . . . 182
- 5.1.6 Running into trouble . . . . . . . . . . . . . . . . . . 183
- 5.2 Accessing MS-DOS Files . . . . . . . . . . . . . . . . . . . 184
- 5.3 Networking with TCP/IP . . . . . . . . . . . . . . . . . . . 185
- 5.3.1 Hardware Requirements . . . . . . . . . . . . . . . . . 186
- 5.3.2 Configuring TCP/IP on your system . . . . . . . . . . . 186
- 5.3.3 SLIP Configuration . . . . . . . . . . . . . . . . . . . 194
- 5.3.4 Using dip . . . . . . . . . . . . . . . . . . . . . . . 197
- 5.4 Networking with UUCP . . . . . . . . . . . . . . . . . . . . 199
- v
- _______________________________________________________________________
-
- 5.5 Electronic Mail . . . . . . . . . . . . . . . . . . . . . . 200
- 5.6 News and USENET . . . . . . . . . . . . . . . . . . . . . . 200
-
- A Sources of Linux Information 203
- A.1 Online Documents . . . . . . . . . . . . . . . . . . . . . . 203
- A.2 Linux Documentation Project Manuals . . . . . . . . . . . . 205
- A.3 Books and Other Published Works . . . . . . . . . . . . . . 206
- A.3.1 Using UNIX . . . . . . . . . . . . . . . . . . . . . . . 207
- A.3.2 Systems Administration . . . . . . . . . . . . . . . . . 207
- A.3.3 The X Window System . . . . . . . . . . . . . . . . . . 208
- A.3.4 Programming . . . . . . . . . . . . . . . . . . . . . . 208
- A.3.5 Kernel Hacking . . . . . . . . . . . . . . . . . . . . . 209
- B Linux Vendor List 211
-
- C FTP Tutorial and Site List 214
- C.1 Starting ftp . . . . . . . . . . . . . . . . . . . . . . . . 214
- C.2 Logging In . . . . . . . . . . . . . . . . . . . . . . . . . 215
- C.3 Poking Around . . . . . . . . . . . . . . . . . . . . . . . 215
- C.4 Downloading files . . . . . . . . . . . . . . . . . . . . . 217
- C.5 Quitting FTP . . . . . . . . . . . . . . . . . . . . . . . 219
- C.6 Using ftpmail . . . . . . . . . . . . . . . . . . . . . . . 220
- C.7 Linux FTP Site List . . . . . . . . . . . . . . . . . . . . 220
- D Linux BBS List 222
- D.1 United States . . . . . . . . . . . . . . . . . . . . . . . 222
- D.2 Outside of the United States . . . . . . . . . . . . . . . . 224
-
- E The GNU General Public License 227
- E.1 Preamble . . . . . . . . . . . . . . . . . . . . . . . . . . 227
- E.2 Terms and Conditions for Copying, Distribution, and
- Modification . . . . . . . . . . . . . . . . . . . . . . . . 228
- E.3 Appendix: How to Apply These Terms to Your New Programs . . 233
-
-
-
-
-
-
-
-
-
- Preface
-
-
-
- ``You are in a maze of twisty little passages, all alike.''
- Before you looms one of the most complex and utterly intimidating
- systems ever written. Linux, the free UNIX clone for the personal
- computer, produced by a mishmash team of UNIX gurus, hackers, and the
- occasional loon. The system itself reflects this complex heritage,
- and although the development of Linux may appear to be a disorganized
- volunteer effort, the system is powerful, fast, and free. It is a
- true 32-bit operating system solution.
- My own experiences with Linux began several years ago, when I
- sat down to figure out how to install the only ``distribution''
- available at the time---a couple of diskettes made available by H.J.
- Lu. I downloaded a slew of files and read pages upon pages of
- loosely-organized installation notes. Somehow, I managed to install
- this basic system and get everything working together. This was
- long before you could buy the Linux software on CD-ROM from worldwide
- distributors; before, in fact, Linux even knew how to access a CD-ROM
- drive. This was before XFree86, before Emacs, before commercial
- software support, and before Linux became a true rival to MS-DOS,
- Microsoft Windows, and OS/2 in the personal computer market.
- You hold in your very hands the map and guidebook to the world of
- Linux. It is my hope that this book will help you to get rolling with
- what I consider to be the fastest, most powerful operating system for
- the personal computer. Setting up your own Linux system can be a
- great deal of fun---so grab a cup of coffee, sit back, and read on.
- Grab a cup for me, too, while you're at it. I've been up hacking
- Linux for days.
-
-
- Audience
-
- This book is for any personal computer user who wants to install and
- use Linux on their system. We assume that you have basic knowledge
- about personal computers and operating systems such as MS-DOS. No
- previous knowledge about Linux or UNIX is assumed.
- Despite this, we strongly suggest that UNIX novices invest in one
- of the many good UNIX books out there. Several of them are listed in
- Appendix A.
-
-
-
-
- vi
- vii
- _______________________________________________________________________
-
- Organization
-
- This book contains the following chapters.
- Chapter 1, Introduction to Linux, gives a general introduction to
- what Linux is, what it can do for you, and what is required to run it
- on your system. It also provides helpful hints for getting help and
- reducing overall stress.
- Chapter 2, Obtaining and Installing Linux, explains how to obtain
- the Linux software, as well as how to install it---from repartitioning
- your drive, creating filesystems, and loading the software on the
- system. It contains instructions meant to be general for any
- distribution of Linux, and relies on the documentation provided for
- your particular release to fill in any gaps.
- Chapter 3, Linux Tutorial, is a complete introduction to using the
- Linux system for UNIX novices. If you have previous UNIX experience,
- most of this material should be familiar.
- Chapter 4, System Administration, introduces many of the important
- concepts of system administration under Linux. This will also be
- of interest to UNIX system administrators who want to know about the
- Linux-specific issues of running a system.
- Chapter 5, Advanced Features, introduces the reader to a number of
- advanced features supported by Linux, such as the X Window System and
- TCP/IP networking. A complete guide to configuring XFree86-3.1 is
- included.
- Appendix A, Sources of Linux Information, is a listing of other
- sources of information about Linux, including newsgroups, mailing
- lists, online documents, and books.
- Appendix B, Linux Vendor List, provides a short list of software
- vendors offering Linux software and services.
- Appendix C, FTP Tutorial and Site List, is a tutorial for
- downloading files from the Internet with FTP. This appendix also
- includes a listing of FTP archive sites which carry Linux software.
- Appendix D, Linux BBS List, is a listing of bulletin board systems
- worldwide which carry Linux software. Because most Linux users are do
- not have access to the Internet, it is important that information on
- BBS systems becomes available.
- Appendix E, The GNU General Public License, contains a copy of
- the GNU GPL, the license agreement under which Linux is distributed.
- It is very important that Linux users understand the GPL; many
- disagreements over the terms of the GPL have been raised in recent
- months.
-
-
- Acknowledgments
-
- This book has been long in the making, and many people are responsible
- for the outcome. In particular, I would like to thank Larry
- Greenfield and Karl Fogel for their work on the first version of
- Chapter 3, and to Lars Wirzenius for his work on Chapter 4. Thanks
- to Michael K. Johnson for his assistance with the LDP and the LaTeX
- viii
- _______________________________________________________________________
-
- conventions used in this manual, and to Ed Chi, who sent me a printed
- copy of the book for edition.
- Thanks to Melinda A. McBride at SSC, Inc., who did an excellent job
- completing the index for Chapters 3, 4, and 5. I would also like to
- thank Andy Oram, Lar Kaufman, and Bill Hahn at O'Reilly and Associates
- for their assistance with the Linux Documentation Project.
- Thanks to Linux Systems Labs, Morse Telecommunications, Yggdrasil
- Computing, and others for their support of the Linux Documentation
- Project through sales of this book and other works.
- Much thanks to the many activists, including (in no particular
- order) Linus Torvalds, Donald Becker, Alan Cox, Remy Card, Ted T'so,
- H.J. Lu, Ross Biro, Drew Eckhardt, Ed Carp, Eric Youngdale, Fred van
- Kempen, Steven Tweedie, and a score of others, for devoting so much
- time and energy to this project, and without whom there wouldn't be
- anything to write a book about.
- Special thanks to the myriad of readers who have sent their helpful
- comments and corrections. There are far too many to list here. Who
- needs a spell checker, when you have an audience?
-
- Matt Welsh
- 13 January 1994
-
-
- Credits and Legalese
-
- The Linux Documentation Project is a loose team of writers,
- proofreaders, and editors who are working on a set of definitive Linux
- manuals. The overall coordinator of the project is Matt Welsh, aided
- by Lars Wirzenius and Michael K. Johnson.
- This manual is but one in a set of several being distributed
- by the Linux Documentation Project, including a Linux User's Guide,
- System Administrator's Guide, and Kernel Hacker's Guide. These
- manuals are all available in LaTeX source format and Postscript
- output for anonymous FTP from sunsite.unc.edu, in the directory
- /pub/Linux/docs/LDP.
- We encourage anyone with a penchant for writing or editing to join
- us in improving Linux documentation. If you have Internet e-mail
- access, you can join the DOC channel of the Linux-Activists mailing
- list by sending mail to
-
- linux-activists-request@niksula.hut.fi
-
- with the line
-
- X-Mn-Admin: join DOC
-
- as the first line of the message body.
- Feel free to get in touch with the author and coordinator of this
- manual if you have questions, postcards, money, or ideas. Matt Welsh
- can be reached via Internet e-mail at mdw@sunsite.unc.edu, and in real
- ix
- _______________________________________________________________________
-
- life at
-
- 205 Gray Street
- Wilson, N.C. 27896
- U.S.A.
- x
- _______________________________________________________________________
-
- UNIX is a trademark of X/Open.
- Linux is not a trademark, and has no connection to UNIXTM or X/Open.
- The X Window System is a trademark of the Massachusetts Institute of
- Technology.
- MS-DOS and Microsoft Windows are trademarks of Microsoft, Inc.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright cO1992--1994 Matt Welsh
- 205 Gray Street NE, Wilson NC, 27893 USA
- mdw@sunsite.unc.edu
-
- Linux Installation and Getting Started may be reproduced and
- distributed, in whole or in part, subject to the following conditions:
-
- 0. The copyright notice above and this permission notice must be
- preserved complete on all complete or partial copies.
-
- 1. Any translation or derivative work of Linux Installation and
- Getting Started must be approved by the author in writing before
- distribution.
-
- 2. If you distribute Linux Installation and Getting Started in part,
- instructions for obtaining the complete version of this manual
- must be included, and a means for obtaining a complete version
- provided.
-
- 3. Small portions may be reproduced as illustrations for reviews or
- quotes in other works without this permission notice if proper
- citation is given.
-
- 4. The GNU General Public License referenced below may be reproduced
- under the conditions given within it.
-
- 5. Several sections of this document are held under separate
- copyright. When these sections are covered by a different
- copyright, the separate copyright is noted. If you distribute
- Linux Installation and Getting Started in part, and that part
- is, in whole, covered under a separate, noted copyright, the
- conditions of that copyright apply.
- xi
- _______________________________________________________________________
-
- Exceptions to these rules may be granted for academic
- purposes: Write to Matt Welsh, at the above address, or email
- mdw@sunsite.unc.edu, and ask. These restrictions are here to protect
- us as authors, not to restrict you as educators and learners.
- The author encourages distributors of Linux software in any medium
- to use the book as an installation and new user guide. Given the
- copyright above, you are free to print and distribute copies of this
- book with your software. You may either distribute this book free of
- charge, or for profit. If doing so, you may wish to include a short
- ``installation supplement'' for your release.
- The author would like to know of any plans to publish and
- distribute this book commercially. In this way, we can ensure that
- you are kept up-to-date with new revisions. And, should a new version
- be right around the corner, you might wish to delay your publication
- of the book until it is available.
- If you are distributing this book commercially, donations,
- royalties, and/or printed copies are greatly appreciated by the
- author. Contributing in this way shows your support for free software
- and the Linux Documentation Project.
-
- All source code in Linux Installation and Getting Started is placed
- under the GNU General Public License. See Appendix E for a copy of
- the GNU ``GPL.''
-
-
- Documentation Conventions
-
- These conventions should be obvious, but we'll include them here for
- the pedantic.
-
- Bold Used to mark new concepts, WARNINGS, and keywords in a
- language.
-
- italics Used for emphasis in text, and occasionally for quotes or
- introductions at the beginning of a section. Also used to
- indicate commands for the user to type when showing screen
- interaction (see below).
- <slanted> Used to mark meta-variables in the text, especially in
- representations of the command line. For example,
-
-
- ls -l <foo>
-
- where <foo> would ``stand for'' a filename, such as
- /bin/cp.
-
- Typewriter Used to represent screen interaction, as in
-
-
- $ ls --l /bin/cp
- -rwxr-xr-
- xii
- _______________________________________________________________________
-
- x 1 root wheel 12104 Sep 25 15:53 /bin/cp
-
-
- Also used for code examples, whether it is C code, a shell
- script, or something else, and to display general files,
- such as configuration files. When necessary for clarity's
- sake, these examples or figures will be enclosed in thin
- boxes.
- [Key] Represents a key to press. You will often see it in this
- form:
-
-
- Press [return] to continue.
-
- ! A diamond in the margin, like a black diamond on a ski
- hill, marks ``danger'' or ``caution.'' Read paragraphs
- marked this way carefully.
-
-
-
-
-
-
-
-
- Chapter 1
-
-
-
-
- Introduction to Linux
-
-
-
- Linux is quite possibly the most important achievement of free
- software since the original Space War, or, more recently, Emacs. It
- has developed into the operating system for businesses, education, and
- personal productivity. Linux is no longer just for UNIX wizards who
- sit for hours in front of the glowing console (although we assure you
- that quite a number of users fall into this category). This book will
- help you get the most out of it.
- Linux (pronounced with a short i, as in LIH-nucks) is a clone
- of the UNIX operating system that runs on Intel 80386 and 80486
- computers. It supports a wide range of software, from TeX to
- X Windows to the GNU C/C++ compiler to TCP/IP. It's a versatile, bona
- fide implementation of UNIX, freely distributed by the terms of the
- GNU General Public License (see Appendix E).
- Linux can turn any 386 or 486 PC into a workstation. It will
- give you the full power of UNIX at your fingertips. Businesses are
- installing Linux on entire networks of machines, using the operating
- system to manage financial and hospital records, a distributed user
- computing environment, telecommunications, and more. Universities
- worldwide are using Linux for teaching courses on operating systems
- programming and design. And, of course, computing enthusiasts
- everywhere are using Linux at home, for programming, productivity, and
- all-around hacking.
- What makes Linux so different is that it is a free implementation
- of UNIX. It was and still is developed by a group of volunteers,
- primarily on the Internet, exchanging code, reporting bugs, and fixing
- problems in an open-ended environment. Anyone is welcome to join in
- the Linux development effort: all it takes is interest in hacking a
- free UNIX clone and some kind of programming know-how. The book that
- you hold in your hands is your tour guide.
-
- 1.1 About This Book
-
- This book is an installation and entry-level guide to the Linux
- system. The purpose is to get new users up and running with the
- system by consolodating as much important material as possible into
-
-
- 1
- 1.1. About This Book 2
- _______________________________________________________________________
-
- one book. Instead of covering many of the volatile technical details,
- those things which tend to change with rapid development, we give you
- enough background to find out more on your own.
- Linux is not difficult to install and use. However, as with any
- implementation of UNIX, there is often some black magic involved to
- get everything working correctly. We hope that this book will get you
- on the Linux tourbus and show you how groovy this operating system can
- be.
- In this book, we cover the following topics.
-
- o What is Linux? The design and philosophy of this unique operating
- system, and what it can do for you.
-
- o All of the details of what is needed to run Linux, including
- suggestions on what kind of hardware configuration is recommended
- for a complete system.
-
- o How to obtain and install Linux. There are many distributions
- of the Linux software. We present a general discussion
- of Linux software distributions, how to obtain them, and
- generic instructions for installing the software (which should be
- applicable to any distribution).
-
- This edition also contains specific instructions for the Slackware
- distribution of Linux.
-
- o A brief introductory UNIX tutorial, for those users who have never
- had experience with UNIX before. This tutorial should, hopefully,
- provide enough material for complete novices to have enough basic
- know-how to find their way around the system.
-
- o An introduction to systems administration with Linux. This covers
- the most important tasks that new Linux administrators will need
- to be familiar with, such as creating users, managing filesystems,
- and so forth.
-
- o Information on configuring more advanced aspects of Linux, such
- as the X Window System, networking with TCP/IP and SLIP, and the
- setup of electronic mail and news systems.
-
- This book is for the personal computer user wishing to get started
- with Linux. We don't assume previous UNIX experience, but do expect
- novices to refer to other materials along the way. For those
- unfamiliar with UNIX, a list of useful sources of information is given
- in Appendix A. In general, this book is meant to be read along with
- another book on basic UNIX concepts.
- 1.2. A Brief History of Linux 3
- _______________________________________________________________________
-
- 1.2 A Brief History of Linux
-
- UNIX is one of the most popular operating systems worldwide because of
- its large support base and distribution. It was originally developed
- as a multitasking system for minicomputers and mainframes in the
- mid-1970's, but has since grown to become one of the most widely used
- operating systems anywhere, despite its sometimes confusing interface
- and lack of central standardization.
- The real reason for UNIX's popularity? Many hackers feel that
- UNIX is the Right Thing---the One True Operating System. Hence, the
- development of Linux by an expanding group of UNIX hackers who want to
- get their hands dirty with their own system.
- Versions of UNIX exist for many systems---ranging from personal
- computers to supercomputers such as the Cray Y-MP. Most versions of
- UNIX for personal computers are quite expensive and cumbersome. At
- the time of this writing, a one-machine version of AT&T's System V for
- the 386 runs at about US$1500.
- Linux is a freely distributable version of UNIX developed primarily
- by Linus Torvalds (1) at the University of Helsinki in Finland. Linux
- was developed with the help of many UNIX programmers and wizards
- across the Internet, allowing anyone with enough know-how and gumption
- the ability to develop and change the system. The Linux kernel
- uses no code from AT&T or any other proprietary source, and much of
- the software available for Linux is developed by the GNU project at
- the Free Software Foundation in Cambridge, Massachusetts. However,
- programmers all over the world have contributed to the growing pool of
- Linux software.
- Linux was originally developed as a hobby project by Linus
- Torvalds. It was inspired by Minix, a small UNIX system developed
- by Andy Tanenbaum, and the first discussions about Linux were on
- the USENET newsgroup comp.os.minix. These discussions were concerned
- mostly with the development of a small, academic UNIX system for Minix
- users who wanted more.
- The very early development of Linux was mostly dealing with the
- task-switching features of the 80386 protected-mode interface, all
- written in assembly code. Linus writes,
-
- ``After that it was plain sailing: hairy coding still, but
- I had some devices, and debugging was easier. I started using
- C at this stage, and it certainly speeds up developement.
- This is also when I start to get serious about my megalomaniac
- ideas to make `a better Minix than Minix'. I was hoping I'd
- be able to recompile gcc under Linux some day...
- ``Two months for basic setup, but then only slightly longer
- until I had a disk-driver (seriously buggy, but it happened
- to work on my machine) and a small filesystem. That was
- about when I made 0.01 available [around late August of 1991]:
-
- ----------------------------
- 1. torvalds@kruuna.helsinki.fi.
- 1.2. A Brief History of Linux 4
- _______________________________________________________________________
-
- it wasn't pretty, it had no floppy driver, and it couldn't
- do much anything. I don't think anybody ever compiled that
- version. But by then I was hooked, and didn't want to stop
- until I could chuck out Minix.''
-
- No announcement was ever made for Linux version 0.01. The
- 0.01 sources weren't even executable: they contained only the bare
- rudiments of the kernel source, and assumed that you had access to a
- Minix machine to compile and play with them.
- On 5 October 1991, Linus announced the first ``official'' version
- of Linux, version 0.02. At this point, Linus was able to run bash
- (the GNU Bourne Again Shell) and gcc (the GNU C compiler), but not
- very much else was working. Again, this was intended as a hacker's
- system. The primary focus was kernel development---none of the issues
- of user support, documentation, distribution, and so on had even been
- addressed. Today, the Linux community still seems to treat these
- ergonomic issues as secondary to the ``real programming''---kernel
- development.
- Linus wrote in comp.os.minix,
-
- ``Do you pine for the nice days of Minix-1.1, when men were
- men and wrote their own device drivers? Are you without a
- nice project and just dying to cut your teeth on a OS you can
- try to modify for your needs? Are you finding it frustrating
- when everything works on Minix? No more all-nighters to get a
- nifty program working? Then this post might be just for you.
- ``As I mentioned a month ago, I'm working on a free
- version of a Minix-lookalike for AT-386 computers. It has
- finally reached the stage where it's even usable (though may
- not be depending on what you want), and I am willing to
- put out the sources for wider distribution. It is just
- version 0.02...but I've successfully run bash, gcc, gnu-make,
- gnu-sed, compress, etc. under it.''
-
- After version 0.03, Linus bumped the version number up to 0.10, as
- more people started to work on the system. After several further
- revisions, Linus increased the version number to 0.95, to reflect his
- expectation that the system was ready for an ``official'' release
- very soon. (Generally, software is not assigned the version number
- 1.0 until it is theoretically complete or bug-free.) This was in
- March of 1992. Almost a year and a half later, in late December of
- 1993, the Linux kernel was still at version 0.99.pl14---asymptotically
- approaching 1.0. As of the time of this writing, the current kernel
- version is 1.1 patchlevel 52, and 1.2 is right around the corner.
- Today, Linux is a complete UNIX clone, capable of running
- X Windows, TCP/IP, Emacs, UUCP, mail and news software, you name
- it. Almost all of the major free software packages have been ported
- to Linux, and commercial software is becoming available. Much more
- hardware is supported than in original versions of the kernel. Many
- people have executed benchmarks on 80486 Linux systems and found
- 1.3. System Features 5
- _______________________________________________________________________
-
- them comparable with mid-range workstations from Sun Microsystems and
- Digital Equipment Corporation. Who would have ever guessed that this
- ``little'' UNIX clone would have grown up to take on the entire world
- of personal computing?
-
-
- 1.3 System Features
-
- Linux supports most of the features found in other implementations of
- UNIX, plus quite a few that aren't found elsewhere. This section is a
- nickel tour of the Linux kernel features.
- Linux is a complete multitasking, multiuser operating system (just
- like all other versions of UNIX). This means that many users can
- be logged into the same machine at once, running multiple programs
- simultaneously.
- The Linux system is mostly compatible with a number of UNIX
- standards (inasmuch as UNIX has standards) on the source level,
- including IEEE POSIX.1, System V, and BSD features. It was
- developed with source portability in mind: therefore, you are most
- likely to find commonly-used features in the Linux system which are
- shared across multiple implementations. A great deal of free UNIX
- software available on the Internet and elsewhere compiles on Linux
- out of the box. In addition, all source code for the Linux system,
- including the kernel, device drivers, libraries, user programs, and
- development tools, is freely distributable.
- Other specific internal features of Linux include POSIX job
- control (used by shells such as csh and bash), pseudoterminals (pty
- devices), and support for national or customized keyboards using
- dynamically-loadable keyboard drivers. Linux also supports virtual
- consoles, which allow you to switch between multiple login sessions
- from the system console in text mode. Users of the ``screen'' program
- will find the Linux virtual console implementation familiar.
- The kernel is able to emulate 387-FPU instructions itself, so that
- systems without a math coprocessor can run programs that require
- floating-point math instructions.
- Linux supports various filesystem types for storing data. Various
- filesystems, such as the ext2fs filesystem, have been developed
- specifically for Linux. Other filesystem types, such as the Minix-1
- and Xenix filesystems, are also supported. The MS-DOS filesystem has
- been implemented as well, allowing you to access MS-DOS files on hard
- drive or floppy directly. The ISO 9660 CD-ROM filesystem type, which
- reads all standard formats of CD-ROMs, is also supported. We'll talk
- more about filesystems in Chapters 2 and 4.
- Linux provides a complete implementation of TCP/IP networking.
- This includes device drivers for many popular Ethernet cards, SLIP
- (Serial Line Internet Protocol, allowing you to access a TCP/IP
- network via a serial connection), PLIP (Parallel Line Internet
- Protocol), PPP (Point-to-Point Protocol), NFS (Network File System),
- and so on. The complete range of TCP/IP clients and services is
- supported, such as FTP, telnet, NNTP, and SMTP. We'll talk more about
- networking in Chapter 5.
- 1.4. Software Features 6
- _______________________________________________________________________
-
- The Linux kernel is developed to use the special protected-mode
- features of the Intel 80386 and 80486 processors. In particular,
- Linux makes use of the protected-mode descriptor-based memory
- management paradigm and many of the other advanced features of these
- processors. Anyone familiar with 80386 protected-mode programming
- knows that this chip was designed for a multitasking system such as
- UNIX (or, actually, Multics). Linux exploits this functionality.
- The Linux kernel supports demand-paged loaded executables. That
- is, only those segments of a program which are actually used are
- read into memory from disk. Also, copy-on-write pages are shared
- among executables, meaning that if several instances of a program are
- running at once, they will share pages in physical memory, reducing
- overall memory usage.
- In order to increase the amount of available memory, Linux also
- implements disk paging: that is, up to 256 megabytes of ``swap
- space''(2) can be allocated on disk. When the system requires
- more physical memory, it will swap out inactive pages to disk, thus
- allowing you to run larger applications and support more users at
- once. However, swap is no substitute for physical RAM---it is much
- slower due to drive access latency times.
- The kernel also implements a unified memory pool for user programs
- and disk cache. In this way, all free memory is used for caching, and
- the cache is reduced when running large programs.
- Executables use dynamically linked shared libraries, meaning that
- executables share common library code in a single library file found
- on disk, not unlike the SunOS shared library mechanism. This allows
- executable files to occupy much less space on disk, especially those
- that use many library functions. There are also statically-linked
- libraries for those who wish to use object debugging or maintain
- ``complete'' executables without the need for shared libraries to be
- in place. Linux shared libraries are dynamically linked at run-time,
- allowing the programmer to replace modules of the libraries with their
- own routines.
- To facilitate debugging, the Linux kernel does core dumps for
- post-mortem analysis. Using a core dump and an executable linked with
- debugging support, it is possible to determine what caused a program
- to crash.
-
-
- 1.4 Software Features
-
- In this section, we'll introduce you to many of the software
- applications available for Linux, and talk about a number of common
- computing tasks. After all, the most important part of the system is
- ----------------------------
- 2. Swap space is inappropriately named: entire processes are not
- swapped, but rather individual pages. Of course, in many cases entire
- processes will be swapped out, but this is not neccessarily always the
- case.
- 1.4. Software Features 7
- _______________________________________________________________________
-
- the wide range of software available for it. The fact that most of
- this software is freely distributable is even more impressive.
-
- 1.4.1 Basic commands and utilities
-
- Virtually every utility that you would expect to find on standard
- implementations of UNIX has been ported to Linux. This includes basic
- commands such as ls, awk, tr, sed, bc, more, and so on. You name
- it, Linux has it. Therefore, you can expect your familiar working
- environment on other UNIX systems to be duplicated on Linux. All
- of the standard commands and utilities are there. (Novice Linux
- users should see Chapter 3 for an introduction to these basic UNIX
- commands.)
- Many text editors are available, including vi, ex, pico, jove, as
- well as GNU Emacs and variants such as Lucid Emacs (which incorporates
- extensions for use under X Windows) and joe. Whatever text editor
- you're accustomed to using has more than likely been ported to Linux.
-
- The choice of a text editor is an interesting one. Many UNIX users
- still use ``simple'' editors such as vi (in fact, the author wrote
- this book using vi under Linux). However, vi has many limitations,
- due to its age, and more modern (and complex) editors such as
- Emacs are gaining popularity. Emacs supports a complete LISP-based
- macro language and interpreter, a powerful command syntax, and other
- fun-filled extensions. Emacs macro packages exist to allow you to
- read electronic mail and news, edit the contents of directories,
- and even engage in an artificially intelligent psychotherapy session
- (indispensible for stressed-out Linux hackers).
- One interesting note is that most of the basic Linux utilities
- are GNU software. These GNU utilities support advanced features not
- found in the standard versions from BSD or AT&T. For example, GNU's
- version of the vi editor, elvis, includes a structured macro language
- which differs from the original AT&T implementation. However, the
- GNU utilities strive to remain compatible with their BSD and System V
- counterparts. Many people consider the GNU versions of these programs
- superior to the originals.
- The most important utility to many users is the shell. The
- shell is a program which reads and executes commands from the
- user. In addition, many shells provide features such as job control
- (allowing the user to manage several running processes at once---not
- as Orwellian as it sounds), input and output redirection, and a
- command language for writing shell scripts. A shell script is a file
- containing a program in the shell command language, analogous to a
- ``batch file'' under MS-DOS.
- There are many types of shells available for Linux. The most
- important difference between shells is the command language. For
- example, the C Shell (csh) uses a command language somewhat like the
- C programming language. The classic Bourne Shell uses a different
- command language. One's choice of a shell is often based on the
- command language that it provides. The shell that you use defines, to
- 1.4. Software Features 8
- _______________________________________________________________________
-
- some extent, your working environment under Linux.
- No matter what shell you're accustomed to, some version of it has
- probably been ported to Linux. The most popular shell is the GNU
- Bourne Again Shell (bash), a Bourne shell variant which includes many
- advanced features, such as job control, command history, command and
- filename completion, an Emacs-like interface for editing the command
- line, and powerful extensions to the standard Bourne shell language.
- Another popular shell is tcsh, a version of the C Shell with advanced
- functionality similar to that found in bash. Other shells include
- zsh, a small Bourne-like shell; the Korn shell (ksh); BSD's ash; and
- rc, the Plan 9 shell.
- What's so important about these basic utilities? Linux gives you
- the unique opportunity to tailor a custom system to your needs. For
- example, if you're the only person who uses your system, and you
- prefer to exclusively use the vi editor, and bash as your shell,
- there's no reason to install other editors or shells. The ``do it
- yourself'' attitude is prevalent among Linux hackers and users.
-
- 1.4.2 Text processing and word processing
-
- Almost every computer user has a need for some kind of document
- preparation system. (How many computer enthusiasts do you know who
- still use pen and paper? Not many, we'll wager.) In the PC world,
- word processing is the norm: it involves editing and manipulating
- text (often in a ``What-You-See-Is-What-You-Get'' environment) and
- producing printed copies of the text, complete with figures, tables,
- and other garnishes.
- In the UNIX world, text processing is much more common, which
- is quite different than the classical concept of word processing.
- With a text processing system, text is entered by the author using
- a ``typesetting language'', which describes how the text should be
- formatted. Instead of entering the text within a special word
- processing environment, the source may be modified with any text
- editor such as vi or Emacs. Once the source text (in the typesetting
- language) is complete, the user formats the text with a separate
- program, which converts the source to a format suitable for printing.
- This is somewhat analogous to programming in a language such as C, and
- ``compiling'' the document into a printable form.
- There are many text processing systems available for Linux. One is
- groff, the GNU version of the classic nroff text formatter originally
- developed by Bell Labs and still used on many UNIX systems worldwide.
- Another modern text processing system is TeX, developed by Donald
- Knuth of computer science fame. Dialects of TeX, such as LaTeX, are
- also available.
- Text processors such as TeX and groff differ mostly in the syntax
- of their formatting languages. The choice of one formatting system
- over another is also based upon what utilities are available to
- satisfy your needs, as well as personal taste.
- For example, some people consider the groff formatting language to
- be a bit obscure, so they use TeX, which is more readable by humans.
- 1.4. Software Features 9
- _______________________________________________________________________
-
- However, groff is capable of producing plain ASCII output, viewable on
- a terminal, while TeX is intended primarily for output to a printing
- device. However, various programs exist to produce plain ASCII from
- TeX-formatted documents, or to convert TeX to groff, for example.
- Another text processing system is texinfo, an extension to TeX used
- for software documentation by the Free Software Foundation. texinfo
- is capable of producing a printed document, or an online-browsable
- hypertext ``Info'' document from a single source file. Info files are
- the main format of documentation used by GNU software such as Emacs.
- Text processors are used widely in the computing community for
- producing papers, theses, magazine articles, and books (in fact, this
- book was produced using LaTeX). The ability to process the source
- language as a plain text file opens the door to many extensions
- to the text processor itself. Because source documents are not
- stored in an obscure format, readable only by a particular word
- processor, programmers are able to write parsers and translators for
- the formatting language, extending the system.
- What does such a formatting language look like? In general,
- the formatting language source consists mostly of the text itself,
- along with ``control codes'' to produce a particular effect, such as
- changing fonts, setting margins, creating lists, and so on.
- As an example, take the following text:
-
- Mr. Torvalds:
-
- We are very upset with your current plans to implement
- post-hypnotic suggestion in the Linux terminal driver code.
- We feel this way for three reasons:
-
-
- 1. Planting subliminal messages in the terminal driver is not
- only immoral, it is a waste of time;
-
- 2. It has been proven that ``post-hypnotic suggestions'' are
- ineffective when used upon unsuspecting UNIX hackers;
-
- 3. We have already implemented high-voltage electric shocks,
- as a security measure, in the code for login.
-
-
- We hope you will reconsider.
-
- This text would appear in the LaTeX formatting language as the
- following:
-
- \begin{quote}
- Mr. Torvalds:
-
- We are very upset with your current plans to implement {\em post-
- hypnotic
- 1.4. Software Features 10
- _______________________________________________________________________
-
- suggestion\/} in the {\bf Linux} termi-
- nal driver code. We feel this
- way for three reasons:
- \begin{enumerate}
- \item Planting subliminal messages in the ker-
- nel driver is not only
- immoral, it is a waste of time;
- \item It has been proven that ``post-hypnotic sugges-
- tions'' are ineffective
- when used upon unsuspecting UNIX hackers;
- \item We have already implemented high-voltage elec-
- tric shocks, as a
- security measure, in the code for {\tt login}.
- \end{enumerate}
- We hope you will reconsider.
- \end{quote}
-
- The author enters the above ``source'' text using any text editor,
- and generates the formatted output by processing the source with
- LaTeX. At first glance, the typesetting language may appear to be
- obscure, but it's actually quite easy to learn. Using a text
- processing system enforces typographical standards when writing. For
- example, all enumerated lists within a document will look the same,
- unless the author modifies the definition of the enumerated list
- ``environment''. The primary goal is to allow the author to
- concentrate on writing the actual text, instead of worrying about
- typesetting conventions.
- WYSIWYG word processors are attractive for many reasons; they
- provide a powerful (and sometimes complex) visual interface for
- editing the document. However, this interface is inherently limited
- to those aspects of text layout which are accessible to the user. For
- example, many word processors provide a special ``format language''
- for producing complicated expressions such as mathematical formulae.
- This is identical text processing, albeit on a much smaller scale.
- The subtle benefit of text processing is that the system allows you
- to specify exactly what you mean. Also, text processing systems allow
- you to edit the source text with any text editor, and the source is
- easily converted to other formats. The tradeoff for this flexibility
- and power is the lack of a WYSIWYG interface.
- Many users of word processors are used to seeing the formatted
- text as they edit it. On the other hand, when writing with a text
- processor, one generally does not worry about how the text will appear
- when formatted. The writer learns to expect how the text should look
- from the formatting commands used in the source.
- There are programs which allow you to view the formatted document
- on a graphics display before printing. For example, the xdvi program
- displays a ``device independent'' file generated by the TeX system
- under the X Windows environment. Other software applications, such
- as xfig, provide a WYSIWYG graphics interface for drawing figures
- and diagrams, which are subsequently converted to the text processing
- 1.4. Software Features 11
- _______________________________________________________________________
-
- language for inclusion in your document.
- Admittedly, text processors such as nroff were around long before
- word processing was available. However, many people still prefer to
- use text processing, because it is more versatile and independent of
- a graphics environment. In either case, the idoc word processor is
- also available for Linux, and before long we expect to see commercial
- word processors becoming available as well. If you absolutely don't
- want to give up word processing for text processing, you can always
- run MS-DOS, or some other operating system, in addition to Linux.
- There are many other text-processing-related utilities available.
- The powerful METAFONT system, used for designing fonts for TeX, is
- included with the Linux port of TeX. Other programs include ispell,
- an interactive spell checker and corrector; makeindex, used for
- generating indicies in LaTeX documents; as well as many groff and
- TeX-based macro packages for formatting many types of documents and
- mathematical texts. Conversion programs to translate between TeX or
- groff source to a myriad of other formats are available.
-
- 1.4.3 Programming languages and utilities
-
- Linux provides a complete UNIX programming environment, including all
- of the standard libraries, programming tools, compilers, and debuggers
- that you would expect to find on other UNIX systems. Within the UNIX
- software development world, applications and systems programming is
- usually done in C or C++. The standard C and C++ compiler for Linux
- is GNU's gcc, which is an advanced, modern compiler supporting many
- options. It is also capable of compiling C++ (including AT&T 3.0
- features) as well as Objective-C, another object-oriented dialect of
- C.
- Besides C and C++, many other compiled and interpreted programming
- languages have been ported to Linux, such as Smalltalk, FORTRAN,
- Pascal, LISP, Scheme, and Ada (if you're masochistic enough to
- program in Ada---we're not going to stop you). In addition, various
- assemblers for writing protected-mode 80386 code are available, as are
- UNIX hacking favorites such as Perl (the script language to end all
- script languages) and Tcl/Tk (a shell-like command processing system
- including support for developing simple X Windows applications).
- The advanced gdb debugger has been ported, which allows you to
- step through a program to find bugs, or examine the cause for a
- crash using a core dump. gprof, a profiling utility, will give
- you performance statistics for your program, letting you know where
- your program is spending most of its time executing. The Emacs text
- editor provides an interactive editing and compilation environment for
- various programming languages. Other tools include GNU make and
- imake, used to manage compilation of large applications; and RCS, a
- system for source locking and revision control.
- Linux implements dynamically-linked shared libraries, which allow
- binaries to be much smaller as the subroutine code is linked at
- run-time. These DLL libraries also allow the applications programmer
- to override function definitions with their own code. For example,
- 1.4. Software Features 12
- _______________________________________________________________________
-
- if a programmer wished to write her own version of the malloc()
- library routine, the linker would use the programmer's new routine
- instead of the one found in the libraries.
- Linux is ideal for developing UNIX applications. It provides a
- modern programming environment with all of the bells and whistles.
- Various standards such as POSIX.1 are supported, allowing software
- written for Linux to be easily ported to other systems. Professional
- UNIX programmers and system administrators can use Linux to develop
- software at home, and then transfer the software to UNIX systems at
- work. This not only can save a great deal of time and money, but
- will also let you work in the comfort of your own home.(3) Computer
- Science students can use Linux to learn UNIX programming and to
- explore other aspects of the system, such as kernel architecture.
- With Linux, not only do you have access to the complete set of
- libraries and programming utilities, but you also have the complete
- kernel and library source code at your fingertips.
-
- 1.4.4 The X Window System
-
- The X Window System is the standard graphics interface for UNIX
- machines. It is a powerful environment supporting many applications.
- Using X Windows, the user can have multiple terminal windows on the
- screen at once, each one containing a different login session. A
- pointing device such as a mouse is often used with the X interface,
- although it isn't required.
- Many X-specific applications have been written, such as games,
- graphics utilities, programming and documentation tools, and so on.
- With Linux and X, your system is a bona fide workstation. Coupled
- with TCP/IP networking, you can even display X applications running
- on other machines on your Linux display, as is possible with other
- systems running X.
- The X Window System was originally developed at MIT, and is freely
- distributable. However, may commercial vendors have distributed
- proprietary enhancements to the original X Windows software. The
- version of X Windows available for Linux is known as XFree86, a port
- of X11R5 made freely distributable for 80386-based UNIX systems such
- as Linux. XFree86 supports a wide range of video hardware, including
- VGA, Super VGA, and a number of accelerated video adaptors. This is
- a complete distribution of the X Windows software, containing the X
- server itself, many applications and utilities, programming libraries,
- and documentation.
- Standard X applications include xterm (a terminal emulator used for
- most text-based applications within an X window); xdm (the X Session
- Manager, which handles logins); xclock (a simple clock display); xman
- (an X-based man page reader), and more. The many X applications
-
- ----------------------------
- 3. The author uses his Linux system to develop and test X Windows
- applications at home, which can be directly compiled on workstations
- elsewhere.
- 1.4. Software Features 13
- _______________________________________________________________________
-
- available for Linux are too numerous to mention here, but the base
- XFree86 distribution includes the ``standard'' applications found in
- the original MIT release. Many others are available separately, and
- theoretically any application written for X Windows should compile
- cleanly under Linux.
- The look and feel of the X Windows interface is controlled to a
- large extent by the window manager. This friendly program is in
- charge of the placement of windows, the user interface for resizing,
- iconifying, and moving windows, the appearance of window frames, and
- so on. The standard XFree86 distribution includes twm, the classic
- MIT window manager, although more advanced window managers such as the
- Open Look Virtual Window Manager (olvwm) are available as well. One
- window manager that is popular among Linux users is fvwm. This is
- a small window manager, requiring less than half of the memory used
- by twm. It provides a 3-D appearance for windows, as well a virtual
- desktop---if the user moves the mouse to the edge of the screen, the
- entire desktop is shifted as if the display were much larger than it
- actually is. fvwm is greatly customizable, and allows all functions
- to be accessed from the keyboard as well as the mouse. Many Linux
- distributions use fvwm as the standard window manager.
- The XFree86 distribution contains programming libraries and include
- files for those wily programmers who wish to develop X applications.
- Various widget sets, such as Athena, Open Look, and Xaw3D are
- supported. All of the standard fonts, bitmaps, man pages, and
- documentation are included. PEX (a programming interface for 3-D
- graphics) is also supported.
- Many X applications programmers use the proprietary Motif widget
- set for development. Several vendors sell single and multiple-user
- licenses for a binary version of Motif for Linux. Because
- Motif itself is relatively expensive, not many Linux users own it.
- However, binaries statically linked with Motif routines may be freely
- distributed. Therefore, if you write a program using Motif and wish
- to distribute it freely, you may provide a binary so that users
- without Motif can use the program.
- The only major caveats with X Windows are the hardware and memory
- requirements. A 386 with 4 megabytes of RAM is capable of running
- X, but 8 megabytes or more of physical RAM are needed to use it
- comfortably. A faster processor is nice to have as well, but having
- enough physical RAM is much more important. In addition, to achieve
- really slick video performance, an accelerated video card (such as
- a local bus S3-chipset card) is strongly recommended. Performance
- ratings in excess of 140,000 xstones have been acheived with Linux
- and XFree86. With sufficient hardware, you'll find that running
- X and Linux is as fast, or faster, than running X on other UNIX
- workstations.
- In Chapter 5 we'll discuss how to install and use X on your system.
- 1.4. Software Features 14
- _______________________________________________________________________
-
- 1.4.5 Networking
-
- Interested in communicating with the world? Yes? No? Maybe?
- Linux supports the two primary networking protocols for UNIX systems:
- TCP/IP and UUCP. TCP/IP (Transmission Control Protocol/Internet
- Protocol, for acronym aficionados) is the set of networking paradigms
- that allow systems all over the world to communicate on a single
- network known as the Internet. With Linux, TCP/IP, and a connection
- to the network, you can communicate with users and machines across the
- Internet via electronic mail, USENET news, file transfers with FTP,
- and more. There are many Linux systems currently on the Internet.
- Most TCP/IP networks use Ethernet as the physical network
- transport. Linux supports many popular Ethernet cards and interfaces
- for personal computers, including the D-Link pocket Ethernet adaptor
- for laptops.
- However, because not everyone has an Ethernet drop at home, Linux
- also supports SLIP (Serial Line Internet Protocol), which allows you
- to connect to the Internet via modem. In order to use SLIP, you'll
- need to have access to a SLIP server, a machine connected to the
- network which allows dial-in access. Many businesses and universities
- provide such SLIP servers. In fact, if your Linux system has an
- Ethernet connection as well as a modem, you can configure it as a SLIP
- server for other hosts.
- NFS (Network File System) allows your system to seamlessly share
- files with other machines on the network. FTP (File Transfer
- Protocol) allows you to transfer files between other machines. Other
- applications include sendmail, a system for sending and receiving
- electronic mail using the SMTP protocol; NNTP-based electronic news
- systems such as C-News and INN; telnet, rlogin, and rsh, which allow
- you to login and execute commands on other machines on the network;
- and finger, which allows you to get information on other Internet
- users. There are literally tons of TCP/IP-based applications and
- protocols out there.
- The full range of mail and news readers are available for Linux,
- such as elm, pine, rn, nn, and tin. Whatever your preference, you can
- configure your Linux system to send and receive electronic mail and
- news from all over the world.
- If you have experience with TCP/IP applications on other UNIX
- systems, Linux will be very familiar to you. The system provides a
- standard socket programming interface, so virtually any program which
- uses TCP/IP can be ported to Linux. The Linux X server also supports
- TCP/IP, allowing you to display applications running on other systems
- on your Linux display.
- In Chapter 5 we'll discuss configuration and setup of TCP/IP,
- including SLIP, for Linux.
- UUCP (UNIX-to-UNIX Copy) is an older mechanism used to transfer
- files, electronic mail, and electronic news between UNIX machines.
- Classically, UUCP machines connected to each other over the phone
- lines via modem, but UUCP is able to transport over a TCP/IP network
- as well. If you do not have access to a TCP/IP network or a SLIP
- 1.4. Software Features 15
- _______________________________________________________________________
-
- server, you can configure your system to send and receive files and
- electronic mail using UUCP. See Chapter 5 for more information.
-
- 1.4.6 Telecommunications and BBS software
-
- If you have a modem, you will be able to communicate with other
- machines using one of the telecommunications packages available for
- Linux. Many people use telecommunications software to access bulletin
- board systems (BBSs), as well as commercial online services such as
- Prodigy, CompuServe, and America On-Line. Other people use their
- modems to connect to a UNIX system at work or school. You can
- even use your modem and Linux system to send and receive facsimiles.
- Telecommunications software under Linux is very similar to that found
- under MS-DOS or other operating systems. Anyone who has ever used a
- telecommunications package will find the Linux equivalent familiar.
- One of the most popular communications packages for Linux is
- Seyon, an X application providing a customizable, ergonomic interface,
- with built-in support for various file transfer protocols such as
- Kermit, ZModem, and so on. Other telecommunications programs include
- C-Kermit, pcomm, and minicom. These are similar to communications
- programs found on other operating systems, and are quite easy to use.
- If you do not have access to a SLIP server (see the previous
- section), you can use term to multiplex your serial line. term will
- allow you to open multiple login sessions over the modem connection
- to a remote machine. term will also allow you to redirect X client
- connections to your local X server, through the serial line, allowing
- you to display remote X applications on your Linux system. Another
- software package, KA9Q, implements a similar SLIP-like interface.
- Running a bulletin board system (BBS) is a favorite hobby (and
- means of income) for many people. Linux supports a wide range of BBS
- software, most of which is more powerful than what is available for
- other operating systems. With a phone line, a modem, and Linux, you
- can turn your system into a BBS, providing dial-in access to your
- system to users worldwide. BBS software for Linux includes XBBS and
- the UniBoard BBS packages.
- Most BBS software locks the user into a menu-based system where
- only certain functions and applications are available. An alternative
- to BBS access is full UNIX access, which would allow users to dial
- into your system and login as a regular user. While this would
- require a fair amount of maintenance on the part of the system
- administrator, it can be done, and providing public UNIX access from
- your Linux system is not difficult to do. Along with a TCP/IP
- network, you can provide electronic mail and news access to users on
- your system.
- If you do not have access to a TCP/IP network or UUCP feed, Linux
- will also allow you to communicate with a number of BBS networks,
- such as FidoNet, with which you can exchange electronic news and mail
- via the phone line. More information on telecommunications and BBS
- software under Linux can be found in Chapter 5.
- 1.4. Software Features 16
- _______________________________________________________________________
-
- 1.4.7 Interfacing with MS-DOS
-
- Various utilities exist to interface with the world of MS-DOS. The
- most well-known application is the Linux MS-DOS Emulator, which allows
- you to run many MS-DOS applications directly from Linux. Although
- Linux and MS-DOS are completely different operating systems, the 80386
- protected-mode environment allows certain tasks to behave as if they
- were running in 8086-emulation mode, as MS-DOS applications do.
- The MS-DOS emulator is still under development, yet many popular
- applications run under it. Understandably, however, MS-DOS
- applications which use bizarre or esoteric features of the system may
- never be supported, because it is only an emulator. For example,
- you wouldn't expect to be able to run any programs which use 80386
- protected-mode features, such as Microsoft Windows (in 386 enhanced
- mode, that is).
- Applications which run successfully under the Linux MS-DOS Emulator
- include 4DOS (a command interpreter), Foxpro 2.0, Harvard Graphics,
- MathCad, Stacker 3.1, Turbo Assembler, Turbo C/C++, Turbo Pascal,
- Microsoft Windows 3.0 (in real mode), and WordPerfect 5.1. Standard
- MS-DOS commands and utilities (such as PKZIP, and so on) work with the
- emulator as well.
- The MS-DOS Emulator is meant mostly as an ad hoc solution for those
- people who need MS-DOS only for a few applications, but use Linux for
- everything else. It's not meant to be a complete implementation of
- MS-DOS. Of course, if the Emulator doesn't satisfy your needs, you can
- always run MS-DOS as well as Linux on the same system. Using the LILO
- boot loader, you can specify at boot time which operating system to
- start. Linux can coexist with other operating systems, such as OS/2,
- as well.
- Linux provides a seamless interface for transferring files between
- Linux and MS-DOS. You can mount an MS-DOS partition or floppy under
- Linux, and directly access MS-DOS files as you would any other.
- Currently under development is a project known as WINE---a
- Microsoft Windows emulator for the X Window System under Linux. Once
- WINE is complete, users will be able to run MS-Windows applications
- directly from Linux. This is similar to the proprietary WABI Windows
- emulator from Sun Microsystems. At the time of this writing, WINE is
- still in the early stages of development, but the outlook is good.
- In Chapter 5 we'll talk about the MS-DOS tools available for
- Linux.
-
- 1.4.8 Other applications
-
- A host of miscellany is available for Linux, as one would expect
- from such a hodgepodge operating system. Linux's primary focus
- is currently for personal UNIX computing, but this is rapidly
- changing. Business and scientific software is expanding, and
- commercial software vendors are beginning to contribute to the growing
- pool of applications.
- Several relational databases are available for Linux, including
- 1.4. Software Features 17
- _______________________________________________________________________
-
- Postgres, Ingres, and Mbase. These are full-featured, professional
- client/server database applications similar to those found on other
- UNIX platforms. /rdb, a commercial database system, is available as
- well.
- Scientific computing applications include FELT (a finite element
- analysis tool); gnuplot (a plotting and data analysis application);
- Octave (a symbolic mathematics package, similar to MATLAB); xspread (a
- spreadsheet calculator); xfractint, an X-based port of the popular
- Fractint fractal generator; xlispstat (a statistics package), and
- more. Other applications include Spice (a circuit design and analysis
- tool) and Khoros (an image/digital signal processing and visualization
- system).
- Of course, there are many more such applications which have been,
- and can be, ported to run on Linux. Whatever your field, porting
- UNIX-based applications to Linux should be quite straightforward.
- Linux provides a complete UNIX programming interface, sufficient to
- serve as the base for any scientific application.
- As with any operating system, Linux has its share of games. These
- include classic text-based dungeon games such as Nethack and Moria;
- MUDs (multi-user dungeons, which allow many users to interact in a
- text-based adventure) such as DikuMUD and TinyMUD; as well as a slew
- of X games such as xtetris, netrek, and Xboard (the X11 version of
- gnuchess). The popular shoot-em-up arcade-style Doom has also been
- ported to Linux.
- For audiophiles, Linux has support for various sound cards and
- related software, such as CDplayer (a program which can control a
- CD-ROM drive as a conventional CD player, surprisingly enough), MIDI
- sequencers and editors (allowing you to compose music for playback
- through a synthesizer or other MIDI-controlled instrument), and sound
- editors for digitized sounds.
- Can't find the application you're looking for? The Linux Software
- Map, described in Appendix A, contains a list of many software
- packages which have been written and ported to Linux. While this list
- is far from complete, it contains a great deal of software. Another
- way to find Linux applications is to look at the INDEX files found on
- Linux FTP sites, if you have Internet access. Just by poking around
- you'll find a great deal of software just waiting to be played with.
- If you absolutely can't find what you need, you can always attempt
- to port the application from another platform to Linux. Most freely
- distributable UNIX-based software will compile on Linux with few
- problems. Or, if all else fails, you can write the application
- yourself. If it's a commercial application you're looking for,
- there may be a free ``clone'' available. Or, you can encourage
- the software company to consider releasing a Linux binary version.
- Several individuals have contacted software companies, asking them to
- port their applications to Linux, and have met with various degrees of
- success.
- 1.5. About Linux's Copyright 18
- _______________________________________________________________________
-
- 1.5 About Linux's Copyright
-
- Linux is covered by what is known as the GNU General Public License,
- or GPL. The GPL was developed for the GNU project by the Free Software
- Foundataion. It makes a number of provisions for the distribution
- and modification of ``free software''. ``Free'' in this sense refers
- to freedom, not just cost. The GPL has always been subject to
- misinterpretation, and we hope that this summary will help you to
- understand the extent and goals of the GPL and its effect on Linux. A
- complete copy of the GPL is included in Appendix E.
- Originally, Linus Torvalds released Linux under a license more
- restrictive than the GPL, which allowed the software to be freely
- distributed and modified, but prevented any money changing hands for
- its distribution and use. On the other hand, the GPL allows people to
- sell and make profit from free software, but does not allow them to
- restrict the right for others to distribute the software in any way.
- First, it should be explained that ``free software'' covered by the
- GPL is not in the public domain. Public domain software is software
- which is not copyrighted, and is literally owned by the public.
- Software covered by the GPL, on the other hand, is copyrighted to
- the author or authors. This means that the software is protected
- by standard international copyright laws, and that the author of the
- software is legally defined. Just because the software may be freely
- distributed does not mean that it is in the public domain.
- GPL-licensed software is also not ``shareware''. Generally,
- ``shareware'' software is owned and copyrighted by the author, but the
- author requires users to send in money for its use after distribution.
- On the other hand, software covered by the GPL may be distributed and
- used free of charge.
- The GPL also allows people to take and modify free software, and
- distribute their own versions of the software. However, any derived
- works from GPL software must also be covered by the GPL. In other
- words, a company could not take Linux, modify it, and sell it under
- a restrictive license. If any software is derived from Linux, that
- software must be covered by the GPL as well.
- The GPL allows free software to be distributed and used free
- of charge. However, it also allows a person or organization to
- distribute GPL software for a fee, and even to make a profit from
- its sale and distribution. However, in selling GPL software, the
- distributor cannot take those rights away from the purchaser; that is,
- if you purchase GPL software from some source, you may distribute the
- software for free, or sell it yourself as well.
- This might sound like a contradiction at first. Why sell software
- for profit when the GPL allows anyone to obtain it for free? As
- an example, let's say that some company decided to bundle a large
- amount of free software on a CD-ROM and distribute it. That company
- would need to charge for the overhead of producing and distributing
- the CD-ROM, and the company may even decide to make profit from the
- sales of software. This is allowed by the GPL.
- Organizations which sell free software must follow certain
- 1.6. The Design and Philosophy of Linux 19
- _______________________________________________________________________
-
- restrictions set forth in the GPL. First, they cannot restrict the
- rights of users who purchase the software. This means that if you
- buy a CD-ROM of GPL software, you can copy and distribute that CD-ROM
- free of charge, or resell it yourself. Secondly, distributors must
- make it obvious to users that the software is indeed covered by
- the GPL. Thirdly, distributors must provide, free of charge, the
- complete source code for the software being distributed. This will
- allow anyone who purchases GPL software to make modifications of that
- software.
- Allowing a company to distribute and sell free software is a very
- good thing. Not everyone has access to the Internet to download
- software, such as Linux, for free. The GPL allows companies to
- sell and distribute software to those people who do not have free
- (cost-wise) access to the software. For example, many organizations
- sell Linux on diskette, tape, or CD-ROM via mail order, and make
- profit from these sales. The developers of Linux may never see any
- of this profit; that is the understanding that is reached between the
- developer and the distributor when software is licensed by the GPL.
- In other words, Linus knew that companies may wish to sell Linux, and
- that he may not see a penny of the profits from those sales.
- In the free software world, the important issue is not money. The
- goal of free software is always to develop and distribute fantastic
- software and to allow anyone to obtain and use it. In the next
- section, we'll discuss how this applies to the development of Linux.
-
-
- 1.6 The Design and Philosophy of Linux
-
- When new users encounter Linux, they often have a few misconceptions
- and false expectations of the system. Linux is a unique operating
- system, and it is important to understand its philosophy and design in
- order to use it effectively. Time enough for a soapbox. Even if you
- are an aged UNIX guru, what follows is probably of interest to you.
- In commercial UNIX development houses, the entire system is
- developed with a rigorous policy of quality assurance, source and
- revision control systems, documentation, and bug reporting and
- resolution. Developers are not allowed to add features or to change
- key sections of code on a whim: they must validate the change as a
- response to a bug report and consequently ``check in'' all changes to
- the source control system, so that the changes can be backed out if
- necessary. Each developer is assigned one or more parts of the system
- code, and only that developer may alter those sections of the code
- while it is ``checked out''.
- Internally, the quality assurance department runs rigorous
- regression test suites on each new pass of the operating system, and
- reports any bugs. It is the responsibility of the developers to fix
- these bugs as reported. A complicated system of statistical analysis
- is employed to ensure that a certain percentage of bugs are fixed
- before the next release, and that the operating system as a whole
- passes certain release criteria.
- In all, the process used by commercial UNIX developers to maintain
- 1.6. The Design and Philosophy of Linux 20
- _______________________________________________________________________
-
- and support their code is very complicated, and quite reasonably so.
- The company must have quantitative proof that the next revision of
- the operating system is ready to be shipped; hence, the gathering
- and analysis of statistics about the operating system's performance.
- It is a big job to develop a commercial UNIX system, often large
- enough to employ hundreds (if not thousands) of programmers, testers,
- documentors, and administrative personel. Of course, no two
- commercial UNIX vendors are alike, but you get the general picture.
- With Linux, you can throw out the entire concept of organized
- development, source control systems, structured bug reporting, or
- statistical analysis. Linux is, and more than likely always will be,
- a hacker's operating system.(4)
- Linux is primarily developed as a group effort by volunteers on the
- Internet from all over the world. Across the Internet and beyond,
- anyone with enough know-how has the opportunity to aid in developing
- and debugging the kernel, porting new software, writing documentation,
- or helping new users. There is no single organization responsible
- for developing the system. For the most part, the Linux community
- communicates via various mailing lists and USENET newsgroups. A
- number of conventions have sprung up around the development effort:
- for example, anyone wishing to have their code included in the
- ``official'' kernel should mail it to Linus Torvalds, which he will
- test and include in the kernel (as long as it doesn't break things or
- go against the overall design of the system, he will more than likely
- include it).
- The system itself is designed with a very open-ended, feature-
- minded approach. While recently the number of new features and
- critical changes to the system have diminished, the general rule is
- that a new version of the kernel will be released about every few
- months (sometimes even more frequently than this). Of course, this is
- a very rough figure: it depends on a several factors including the
- number of bugs to be fixed, the amount of feedback from users testing
- pre-release versions of the code, and the amount of sleep that Linus
- has had this week.
- Let it suffice to say that not every single bug has been fixed,
- and not every problem ironed out between releases. As long as the
- system appears to be free of critical or oft-manifesting bugs, it is
- considered ``stable'' and new revisions will be released. The thrust
- behind Linux development is not an effort to release perfect, bug-free
- code: it is to develop a free implementation of UNIX. Linux is for
- the developers, more than anyone else.
- Anyone who has a new feature or software application to add to the
- system generally makes it available in an ``alpha'' stage---that is,
- a stage for testing by those brave or unwary users who want to bash
-
- ----------------------------
- 4. What I mean by ``hacker'' is a feverishly dedicated programmer, a
- person who enjoys exploiting computers and generally doing interesting
- things with them. This is in contrast to the common denotation of
- ``hacker'' as a computer wrongdoer or outlaw.
- 1.6. The Design and Philosophy of Linux 21
- _______________________________________________________________________
-
- out problems with the initial code. Because the Linux community is
- largely based on the Internet, alpha software is usually uploaded to
- one or more of the various Linux FTP sites (see Appendix C) and a
- message posted to one of the Linux USENET newsgroups about how to get
- and test the code. Users who download and test alpha software can
- then mail results, bug fixes, or questions to the author.
- After the initial problems in the alpha code have been fixed, the
- code enters a ``beta'' stage, in which it is usually considered
- stable but not complete (that is, it works, but not all of the
- features may be present). Otherwise, it may go directly to a
- ``final'' stage in which the software is considered complete and
- usable. For kernel code, once it is complete the developer may ask
- Linus to include it in the standard kernel, or as an optional add-on
- feature to the kernel.
- Keep in mind that these are only conventions---not rules. Some
- people feel so confident with their software that they don't need to
- release an alpha or test version. It is always up to the developer to
- make these decisions.
- You might be amazed that such a nonstructured system of volunteers,
- programming and debugging a complete UNIX system, could get anything
- done at all. As it turns out, it is one of the most efficient and
- motivated development efforts ever employed. The entire Linux kernel
- was written from scratch, without employing any code from proprietary
- sources. A great deal of work was put forth by volunteers to port all
- of the free software under the sun to the Linux system. Libraries
- were written and ported, filesystems developed, and hardware drivers
- written for many popular devices.
- The Linux software is generally released as a distribution, which
- is a set of pre-packaged software making up an entire system. It
- would be quite difficult for most users to build a complete system
- from the ground up, starting with the kernel, adding utilities, and
- installing all of the necessary software by hand. Instead, there
- are a number of software distributions including everything that you
- need to install and run a complete system. Again, there is no
- standard distribution---there are many, each with their own advantages
- and disadvantages. We'll talk more about the various available Linux
- distributions in Section 2.1.
- Despite the completeness of the Linux software, you will still need
- a bit of UNIX know-how to install and run a complete system. No
- distribution of Linux is completely bug-free, so you may be required
- to fix small problems by hand after installation. Running a UNIX
- system is not an easy task, not even for commercial versions of UNIX.
- If you're serious about Linux, bear in mind that it will take a
- considerable amount of effort and attention on your part to keep the
- system running and take care of things: this is true of any UNIX
- system, and Linux is no exception. Because of the diversity of the
- Linux community and the many needs which the software is attempting to
- meet, not eveything can be taken care of for you all of the time.
- 1.6. The Design and Philosophy of Linux 22
- _______________________________________________________________________
-
- 1.6.1 Hints for UNIX novices
-
- Installing and using your own Linux system does not require a great
- deal of background in UNIX. In fact, many UNIX novices successfully
- install Linux on their systems. This is a worthwhile learning
- experience, but keep in mind that it can be very frustrating to some.
- If you're lucky, you will be able to install and start using your
- Linux system without any UNIX background. However, once you are ready
- to delve into the more complex tasks of running Linux---installing
- new software, recompiling the kernel, and so forth---having background
- knowledge in UNIX is going to be a necessity.
- Fortunately, by running your own Linux system you will be
- able to learn the essentials of UNIX necessary for these tasks.
- This book contains a good deal of information to help you get
- started---Chapter 3 is a tutorial covering UNIX basics, and Chapter 4
- contains information on Linux system administration. You may wish to
- read these chapters before you attempt to install Linux at all---the
- information contained therein will prove to be invaluable should you
- run into problems.
- Nobody can expect to go from being a UNIX novice to a UNIX system
- administrator overnight. No implementation of UNIX is expected to run
- trouble- and maintenance-free. You must be aptly prepared for the
- journey which lies ahead. Otherwise, if you're new to UNIX, you may
- very well become overly frustrated with the system.
-
- 1.6.2 Hints for UNIX gurus
-
- Even those people with years of UNIX programming and systems
- administration experience may need assistance before they are able to
- pick up and install Linux. There are still aspects of the system that
- UNIX wizards will need to be familiar with before diving in. For one
- thing, Linux is not a commercial UNIX system. It does not attempt to
- uphold the same standards as other UNIX systems you have may have come
- across. To be more specific, while stability is an important factor
- in the development of Linux, it is not the only factor.
- More important, perhaps, is functionality. In many cases, new code
- will make it into the standard kernel even though it is still buggy
- and not functionally complete. The assumption is that it is more
- important to release code which users can test and use than delay a
- release until it is ``complete''. As an example, WINE (the Microsoft
- Windows Emulator for Linux) had an ``official'' alpha release before
- it was completely tested. In this way, the Linux community at large
- had a chance to work with the code, test it, and help develop it,
- while those who found the alpha code ``good enough'' for their needs
- could use it. Commercial UNIX vendors rarely, if ever, release
- software in this manner.
- If you have been a UNIX systems administrator for more than a
- decade, and have used every commercial UNIX system under the Sun (no
- pun intended), Linux may take some getting used to. The system is
- very modern and dynamic. A new kernel release is made approximately
- 1.7. Differences Between Linux and Other Operating Systems 23
- _______________________________________________________________________
-
- every few months. New software is constantly being released. One day
- your system may be completely up-to-date with the current trend, and
- the next day the same system is considered to be in the Stone Age.
- With all of this dynamic activity, how can you be expected to keep
- up with the ever-changing Linux world? For the most part, it is best
- to upgrade incrementally; that is, upgrade only those parts of the
- system that need upgrading, and then only when you think an upgrade
- is necessary. For example, if you never use Emacs, there is little
- reason to continuously install every new release of Emacs on your
- system. Furthermore, even if you are an avid Emacs user, there is
- usually no reason to upgrade it unless you find that some feature is
- missing that is in the next release. There is little or no reason to
- always be on top of the newest version of software.
- We hope that Linux will meet or exceed your expectations of a
- homebrew UNIX system. At the very core of Linux is the spirit of free
- software, of constant development and growth. The Linux community
- favors expansion over stability, and that is a difficult concept to
- swallow for many people, especially those so steeped in the world of
- commercial UNIX. You cannot expect Linux to be perfect; nothing ever
- is in the free software world. However, we believe that Linux really
- is as complete and useful as any other implementation of UNIX.
-
-
- 1.7 Differences Between Linux and Other Operating Systems
-
- It is important to understand the differences between Linux and other
- operating systems, such as MS-DOS, OS/2, and other implementations of
- UNIX for the personal computer. First of all, it should be made clear
- that Linux will coexist happily with other operating systems on the
- same machine: that is, you can run MS-DOS and OS/2 along with Linux
- on the same system without problems. There are even ways to interact
- between the various operating systems, as we'll see.
-
- 1.7.1 Why use Linux?
-
- Why use Linux instead of a well-known, well-tested, and well-
- documented commercial operating system? We could give you a thousand
- reasons. One of the most important, however, is that Linux is an
- excellent choice for personal UNIX computing. If you're a UNIX
- software developer, why use MS-DOS at home? Linux will allow you
- to develop and test UNIX software on your PC, including database and
- X Windows applications. If you're a student, chances are that your
- university computing systems run UNIX. With Linux, you can run your
- own UNIX system and tailor it to your own needs. Installing and
- running Linux is also an excellent way to learn UNIX if you don't have
- access to other UNIX machines.
- But let's not lose sight. Linux isn't just for personal UNIX
- users. It is robust and complete enough to handle large tasks, as
- well as distributed computing needs. Many businesses---especially
- small ones---are moving to Linux in lieu of other UNIX-based
- 1.7. Differences Between Linux and Other Operating Systems 24
- _______________________________________________________________________
-
- workstation environments. Universities are finding Linux to be
- perfect for teaching courses in operating systems design. Larger
- commercial software vendors are starting to realize the opportunities
- that a free operating system can provide.
- The following sections should point out the most important
- differences between Linux and other operating systems. We hope that
- you'll find that Linux can meet your computing needs, or (at least)
- enhance your current computing environment. Keep in mind that they
- best way to get a taste for Linux is just to try it out---you needn't
- even install a complete system to get a feel for it. In Chapter 2,
- we'll show you how.
-
- 1.7.2 Linux vs. MS-DOS
-
- It's not uncommon to run both Linux and MS-DOS on the same system.
- Many Linux users rely on MS-DOS for applications such as word
- processing. While Linux provides its own analogues for these
- applications (for example, TeX), there are various reasons why a
- particular user would want to run MS-DOS as well as Linux. If your
- entire dissertation is written using WordPerfect for MS-DOS, you may
- not be able to easily convert it to TeX or some other format. There
- are many commercial applications for MS-DOS which aren't available for
- Linux, and there's no reason why you can't use both.
- As you might know, MS-DOS does not fully utilize the functionality
- of the 80386 and 80486 processors. On the other hand, Linux runs
- completely in the processor's protected mode, and exploits all of
- the features of the processor. You can directly access all of your
- available memory (and beyond, using virtual RAM). Linux provides a
- complete UNIX interface not available under MS-DOS---developing and
- porting UNIX applications under Linux is easily done, while under
- MS-DOS you are limited to a small subset of the UNIX programming
- functionality. Because Linux is a true UNIX system, you do not have
- these limitations.
- We could debate the pros and cons of MS-DOS and Linux for pages
- on end. However, let it suffice to say that Linux and MS-DOS are
- completely different entities. MS-DOS is inexpensive (compared to
- other commercial operating systems), and has a strong foothold in the
- PC computing world. No other operating system for the PC has reached
- the level of popularity of MS-DOS---largely because the cost of these
- other operating systems is unapproachable to most personal computer
- users. Very few PC users can imagine spending $1000 or more on the
- operating system alone. Linux, however, is free, and you finally have
- the chance to decide.
- We will allow you to make your own judgments of Linux and MS-DOS
- based on your expectations and needs. Linux is not for everybody. If
- you have always wanted to run a complete UNIX system at home, without
- the high cost of other UNIX implementations for the PC, Linux may be
- what you're looking for.
- There are tools available to allow you to interact between Linux
- and MS-DOS. For example, it is easy to access MS-DOS files from Linux.
- 1.7. Differences Between Linux and Other Operating Systems 25
- _______________________________________________________________________
-
- There is also an MS-DOS emulator available, which allows you to run
- many popular MS-DOS applications. A Microsoft Windows emulator is
- currently under development.
-
- 1.7.3 Linux vs. The Other Guys
-
- A number of other advanced operating systems are on the rise in the
- PC world. Specifically, IBM's OS/2 and Microsoft's Windows NT are
- becoming very popular as more users move away from MS-DOS.
- Both OS/2 and Windows NT are full multitasking operating systems,
- much like Linux. Technically, OS/2, Windows NT, and Linux are quite
- similar: they support roughly the same features in terms of user
- interface, networking, security, and so forth. However, the real
- difference between Linux and The Other Guys is the fact that Linux is
- a version of UNIX, and hence benefits from the contributions of the
- UNIX community at large.
- What makes UNIX so important? Not only is it the most popular
- operating system for multiuser machines, it is also the foundation for
- the majority of the free software world. If you have access to the
- Internet, nearly all of the free software available there is written
- specifically for UNIX systems. (The Internet itself is largely
- UNIX-based.)
- There are many implementations of UNIX, from many vendors, and no
- single organization is responsible for distribution. There is a large
- push in the UNIX community for standardization in the form of open
- systems, but no single corporation controls this design. Hence, any
- vendor (or, as it turns out, any hacker) may implement these standards
- in an implementation of UNIX.
- OS/2 and Windows NT, on the other hand, are proprietary systems.
- The interface and design are controlled by a single corporation, and
- only that corporation may implement that design. (Don't expect to see
- a free version of OS/2 anytime in the near future.) In one sense,
- this kind of organization is beneficial: it sets a strict standard
- for the programming and user interface unlike that found even in the
- open systems community. OS/2 is OS/2 wherever you go---the same holds
- for Windows NT.
- However, the UNIX interface is constantly developing and changing.
- Several organizations are attempting to standardize the programming
- model, but the task is very difficult. Linux, in particular, is
- mostly compliant with the POSIX.1 standard for the UNIX programming
- interface. As time goes on, it is expected that the system will
- adhere to other such standards, but standardization is not the primary
- issue in the Linux development community.
-
- 1.7.4 Other implementations of UNIX
-
- There are several other implementations of UNIX for the 80386 and
- 80486. The 80386 architecture lends itself to the UNIX design, and a
- number of vendors have taken advantage of this.
- Feature-wise, other implementations of UNIX for the PC are quite
- 1.7. Differences Between Linux and Other Operating Systems 26
- _______________________________________________________________________
-
- similar to Linux. You will see that almost all commercial versions
- of UNIX support roughly the same software, programming environment,
- and networking features. However, there are some strong differences
- between Linux and commercial versions of UNIX.
- First of all, Linux supports a different range of hardware
- from commercial implementations. In general, Linux supports the
- most well-known hardware devices, but support is still limited to
- that hardware which developers actually have access to. However,
- commercial UNIX vendors generally have a wider support base, and tend
- to support more hardware, although Linux is not far behind. We'll
- cover the hardware requirements for Linux in Section 1.8.
- Secondly, commercial implementations of UNIX usually come bundled
- with a complete set of documentation as well as user support from the
- vendor. In contrast, most of the documentation for Linux is limited
- to documents available on the Internet---and books such as this one.
- In Section 1.9 we'll list sources of Linux documentation and other
- information.
- As far as stability and robustness are concerned, many users have
- reported that Linux is at least as stable as commercial UNIX systems.
- Linux is still under development, and certain features (such TCP/IP
- networking) are less stable but improve as time goes by.
- The most important factor to consider for many users is price. The
- Linux software is free, if you have access to the Internet (or another
- computer network) and can download it. If you do not have access
- to such a network, you may need to purchase it via mail order on
- diskette, tape, or CD-ROM (see Appendix B). Of course, you may
- copy Linux from a friend who may already have the software, or share
- the cost of purchasing it with someone else. If you are planning to
- install Linux on a large number of machines, you need only purchase a
- single copy of the software---Linux is not distributed on a ``single
- machine'' license.
- The value of commercial UNIX implementations should not be
- demeaned: along with the price of the software itself, one usually
- pays for documentation, support, and assurance of quality. These
- are very important factors for large institutions, but personal
- computer users may not require these benefits. In any case, many
- businesses and universities are finding that running Linux on a lab of
- inexpensive personal computers is preferrable to running a commercial
- version of UNIX in a lab of workstations. Linux can provide the
- functionality of a workstation on PC hardware at a fraction of the
- cost.
- As a ``real-world'' example of Linux's use within the computing
- community, Linux systems have travelled the high seas of the
- North Pacific, managing telecommunications and data analysis for an
- oceanographic research vessel. Linux systems are being used at
- research stations in Antarctica. As a more mundane example, perhaps,
- several hospitals are using Linux to maintain patient records. It is
- proving to be as reliable and useful as other implementations of UNIX.
- There are other free or inexpensive implementations of UNIX for the
- 386 and 486. One of the most well-known is 386BSD, an implementation
- 1.8. Hardware Requirements 27
- _______________________________________________________________________
-
- and port of BSD UNIX for the 386. 386BSD is comparable to Linux in
- many ways, but which one is ``better'' depends on your own personal
- needs and expectations. The only strong distinction that we can make
- is that Linux is developed openly (where any volunteer can aid in the
- development process), while 386BSD is developed within a closed team
- of programmers who maintain the system. Because of this, serious
- philosophical and design differences exist between the two projects.
- The goals of the two projects are entirely different: the goal of
- Linux is to develop a complete UNIX system from scratch (and have a
- lot of fun in the process), and the goal of 386BSD is in part to
- modify the existing BSD code for use on the 386.
- NetBSD is another port of the BSD NET/2 distribution to a number
- of machines, including the 386. NetBSD has a slightly more open
- development structure, and is comparable to 386BSD in many respects.
- Another project of note is HURD, an effort by the Free Software
- Foundation to develop and distribute a free version of UNIX for many
- platforms. Contact the Free Software Foundation (the address is given
- in Appendix E) for more information about this project. At the time
- of this writing, HURD is still in early stages of development.
- Other inexpensive versions of UNIX exist as well, such as Coherent
- (available for about $99) and Minix (an academic but useful UNIX clone
- upon which early development of Linux was based). Some of these
- implementations are of mostly academic interest, while others are
- full-fledged systems for real productivity. Needless to say, however,
- many personal UNIX users are moving to Linux.
-
-
- 1.8 Hardware Requirements
-
- Now you must be convinced of how wonderful Linux is, and all of the
- great things that it can do for you. However, before you rush
- out and install the software, you need to be aware of the hardware
- requirements and limitations that Linux has.
- Keep in mind that Linux was developed by its users. This means,
- for the most part, that the hardware which is supported by Linux is
- only the hardware which the users and developers actually have access
- to. As it turns out, most of the popular hardware and peripherals
- for 80386/80486 systems are supported (in fact, Linux supports more
- hardware than some commercial implementations of UNIX). However, some
- of the more obscure and esoteric devices aren't supported yet. As
- time goes on, a wider range of hardware is supported, so if your
- favorite devices aren't listed here, chances are that support for them
- is forthcoming.
- Another drawback for hardware support under Linux is that many
- companies have decided to keep the hardware interface proprietary.
- The upshot of this is that volunteer Linux developers simply can't
- write drivers for those devices (if they could, those drivers would
- be owned by the company that owned the interface, which would violate
- the GPL). The companies that maintain proprietary interfaces write
- their own drivers for operating systems such as MS-DOS and Microsoft
- Windows; the end user (that's you) never needs to know about the
- 1.8. Hardware Requirements 28
- _______________________________________________________________________
-
- interface. Unfortunately, this does not allow Linux developers to
- write drivers for those devices.
- There is very little that can be done about the situation. In some
- cases, programmers have attempted to write hackish drivers based on
- assumptions about the interface. In other cases, developers will work
- with the company in question and attempt to obtain information about
- the device interface, with varying degrees of success.
- In the following sections, we'll attempt to summarize the hardware
- requirements for Linux. The Linux Hardware HOWTO (see Section 1.9)
- contains a more complete listing of hardware supported by Linux.
- Disclaimer: a good deal of hardware support for Linux is currently
- in the development stage. Some distributions may or may not support
- these experimental features. This section primarily lists hardware
- which has been supported for some time and is known to be stable.
- When in doubt, consult the documentation for the distribution of
- Linux you are using (see Section 2.1 for more information on Linux
- distributions).
-
- 1.8.1 Motherboard and CPU requirements
-
- Linux currently supports systems with an Intel 80386, 80486, or
- Pentium CPU. This includes all variations on this CPU type, such as
- the 386SX, 486SX, 486DX, and 486DX2. Non-Intel ``clones'', such as
- AMD and Cyrix processors, work with Linux as well.
- If you have a 80386 or 80486SX, you may also wish to use a math
- coprocessor, although one isn't required (the Linux kernel can do
- FPU emulation if you do not have a math coprocessor). All standard
- FPU couplings are supported, such as IIT, Cyrix FasMath, and Intel
- coprocessors.
- The system motherboard must use ISA or EISA bus architecture.
- These terms define how the system interfaces with peripherals and
- other components on the main bus. Most systems sold today are either
- ISA or EISA bus. IBM's MicroChannel (MCA) bus, found on machines such
- as the IBM PS/2, is not currently supported.
- Systems which use a local bus architecture (for faster video and
- disk access) are supported as well. It is suggested that you have a
- standard local bus architecture such as the VESA Local Bus (``VLB'').
-
- 1.8.2 Memory requirements
-
- Linux requires very little memory to run compared to other advanced
- operating systems. You should have at the very least 2 megabytes of
- RAM; however, it is strongly suggested that you have 4 megabytes. The
- more memory you have, the faster the system will run.
- Linux can support the full 32-bit address range of the 386/486; in
- other words, it will utilize all of your RAM automatically.
- Linux will run happily with only 4 megabytes of RAM, including
- all of the bells and whistles such as X Windows, Emacs, and so on.
- However, having more memory is almost as important as having a faster
- processor. 8 megabytes is more than enough for personal use; 16
- 1.8. Hardware Requirements 29
- _______________________________________________________________________
-
- megabytes or more may be needed if you are expecting a heavy user load
- on the system.
- Most Linux users allocate a portion of their hard drive as swap
- space, which is used as virtual RAM. Even if you have a great deal
- of physical RAM in your machine, you may wish to use swap space.
- While swap space is no replacement for actual physical RAM, it can
- allow your system to run larger applications by swapping out inactive
- portions of code to disk. The amount of swap space that you should
- allocate depends on several factors; we'll come back to this question
- in Section 2.2.3.
-
- 1.8.3 Hard drive controller requirements
-
- You do not need to have a hard drive to run Linux; you can run a
- minimal system completely from floppy. However, this is slow and
- very limited, and many users have access to hard drive storage anyway.
- You must have an AT-standard (16-bit) controller. There is support
- in the kernel for XT-standard (8 bit) controllers; however, most
- controllers used today are AT-standard. Linux should support all MFM,
- RLL, and IDE controllers. Most, but not all, ESDI controllers are
- supported---only those which do ST506 hardware emulation.
- The general rule for non-SCSI hard drive and floppy controllers is
- that if you can access the drive from MS-DOS or another operating
- system, you should be able to access it from Linux.
- Linux also supports a number of popular SCSI drive controllers,
- although support for SCSI is more limited because of the wide range
- of controller interface standards. Supported SCSI controllers include
- the Adaptec AHA1542B, AHA1542C, AHA1742A (BIOS version 1.34), AHA1522,
- AHA1740, AHA1740 (SCSI-2 controller, BIOS 1.34 in Enhanced mode);
- Future Domain 1680, TMC-850, TMC-950; Seagate ST-02; UltraStor SCSI;
- Western Digital WD7000FASST. Clones which are based on these cards
- should work as well.
-
- 1.8.4 Hard drive space requirements
-
- Of course, to install Linux, you'll need to have some amount of free
- space on your hard drive. Linux will support multiple hard drives in
- the same machine; you can allocate space for Linux across multiple
- drives if necessary.
- The amount of hard drive space that you will require depends
- greatly on your needs and the amount of software that you're
- installing. Linux is relatively small as UNIX implementations go; you
- could run a complete system in 10 to 20 megabytes of space on your
- drive. However, if you want to have room for expansion, and for
- larger packages such as X Windows, you will need more space. If you
- plan to allow multiple users to use the machine, you will need to
- allocate storage for their files.
- Also, unless you have a large amount of physical RAM (16 megabytes
- or more), you will more than likely want to allocate swap space, to be
- used as virtual RAM. We will discuss all of the details of installing
- 1.8. Hardware Requirements 30
- _______________________________________________________________________
-
- and using swap space in Section 2.2.3.
- Each distribution of Linux usually comes with some literature that
- should help you to gauge the precise amount of required storage
- depending on the amount of software you plan to install. You can
- run a minimal system with less than 20 megabytes; a complete system
- with all of the bells and whistles in 80 megabytes or less; and
- a very large system with room for many users and space for future
- expansion in the range of 100-150 megabytes. Again, these figures
- are meant only as a ballpark approximation; you will have to look at
- your own needs and goals in order to determine your specific storage
- requirements.
-
- 1.8.5 Monitor and video adapator requirements
-
- Linux supports all standard Hercules, CGA, EGA, VGA, IBM monochrome,
- and Super VGA video cards and monitors for the default text-based
- interface. In general, if the video card and monitor coupling works
- under another operating system such as MS-DOS, it should work fine
- with Linux. Original IBM CGA cards suffer from ``snow'' under Linux,
- which is not pleasant to use.
- Graphical environments such as the X Window System have video
- hardware requirements of their own. Instead of listing these
- requirements here, we relegate the discussion to Section 5.1.1. In
- short, to run the X Window System on your Linux machine, you will need
- one of the video cards listed in that section.
-
- 1.8.6 Miscellaneous hardware
-
- The above sections described the hardware which is required to run
- a Linux system. However, most users have a number of ``optional''
- devices such as tape and CD-ROM storage, sound boards, and so on, and
- are interested in whether or not this hardware is supported by Linux.
- Read on.
-
- 1.8.6.1 Mice and other pointing devices
-
- For the most part, you will only be using a mouse under a graphical
- environment such as the X Window System. However, several Linux
- applications not associated with a graphics environment do make use of
- the mouse.
- Linux supports all standard serial mice, including Logitech, MM
- series, Mouseman, Microsoft (2-button) and Mouse Systems (3-button).
- Linux also supports Microsoft, Logitech, and ATIXL busmice. The PS/2
- mouse interface is supported as well.
- All other pointing devices, such as trackballs, which emulate the
- above mice, should work as well.
- 1.8. Hardware Requirements 31
- _______________________________________________________________________
-
- 1.8.6.2 CD-ROM storage
-
- Almost all CD-ROM drives use the SCSI interface. As long as you have
- a SCSI adaptor supported by Linux, then your CD-ROM drive should work.
- A number of CD-ROM drives have been verified to work under Linux,
- including the NEC CDR-74, Sony CDU-541, and Texel DM-3024. The Sony
- internal CDU-31a and the Mistsumi CD-ROM drives are supported by Linux
- as well.
- Linux supports the standard ISO-9660 filesystem for CD-ROMs.
-
- 1.8.6.3 Tape drives
-
- There are several types of tape drives available on the market. Most
- of them use the SCSI interface, all of which should be supported by
- Linux. Among the verified SCSI tape drives are the Sankyo CP150SE;
- Tandberg 3600; Wangtek 5525ES, 5150ES, and 5099EN with the PC36
- adaptor. Other QIC-02 drives should be supported as well.
- Drivers are currently under development for various other tape
- devices, such as Colorado drives which hang off of the floppy
- controller.
-
- 1.8.6.4 Printers
-
- Linux supports the complete range of parallel printers. If you are
- able to access your printer via the parallel port from MS-DOS or
- another operating system, you should be able to access it from Linux
- as well. The Linux printing software consists of the UNIX standard lp
- and lpr software. This software also allows you to print remotely via
- the network, if you have one available.
-
- 1.8.6.5 Modems
-
- As with printer support, Linux supports the full range of serial
- modems, both internal and external. There is a great deal of
- telecommunications software available for Linux, including Kermit,
- pcomm, minicom, and Seyon. If your modem is accessible from another
- operating system on the same machine, you should be able to access it
- from Linux with no difficulty.
-
- 1.8.7 Ethernet cards
-
- Many popular Ethernet cards and LAN adaptors are supported by Linux.
- These include:
-
- o 3com 3c503, 3c503/16
-
- o Novell NE1000, NE2000
-
- o Western Digital WD8003, WD8013
- 1.9. Sources of Linux Information 32
- _______________________________________________________________________
-
- o Hewlett Packard HP27245, HP27247, HP27250
-
- o D-Link DE-600
-
- The following clones are reported to work:
-
- o LANNET LEC-45
-
- o Alta Combo
-
- o Artisoft LANtastic AE-2
-
- o Asante Etherpak 2001/2003,
-
- o D-Link Ethernet II
-
- o LTC E-NET/16 P/N 8300-200-002
-
- o Network Solutions HE-203,
-
- o SVEC 4 Dimension Ethernet
-
- o 4-Dimension FD0490 EtherBoard 16
-
- Clones which are compatible with any of the above cards should work as
- well.
-
-
- 1.9 Sources of Linux Information
-
- As you have probably guessed, there are many sources of information
- about Linux available apart from this book. In particular, there
- are a number of books, not specific to Linux but rather about UNIX
- in general, that will be of importance, especially to those readers
- without previous UNIX experience. If you are new to the UNIX world,
- we seriously suggest that you take the time to peruse one of these
- books before you attempt to brave the jungles of Linux. Specifically,
- the book Learning the UNIX Operating System, by Grace Todino and John
- Strang, is a good place to start.
- Many of the following sources of information are available online
- in some electronic form. That is, you must have access to an online
- network, such as the Internet, USENET, or Fidonet, in order to access
- the information contained therein. If you do not have online access
- to any of this material, you might be able to find someone kind enough
- to give you hardcopies of the documents in question. Read on.
-
- 1.9.1 Online documents
-
- If you have access to the Internet, there are many Linux documents
- available via anonymous FTP from archive sites all over the world. If
- 1.9. Sources of Linux Information 33
- _______________________________________________________________________
-
- you do not have direct Internet access, these documents may still be
- available to you: many Linux distributions on CD-ROM contain all of
- the documents mentioned here. Also, they are distributed on many
- other networks, such as Fidonet and CompuServe. If you are able to
- send mail to Internet sites, you may be able to retrieve these files
- using one of the ftpmail servers which will electronically mail you
- the documents or files from FTP archive sites. See Appendix C for
- more information on using ftpmail.
- There is a great number of FTP archive sites which carry Linux
- software and related documents. A list of well-known Linux archive
- sites is given in Appendix C. In order to reduce network traffic, you
- should always use the FTP site which is geographically (network-wise)
- closest to you.
- Appendix A contains a listing of some of the Linux documents which
- are available via anonymous FTP. The filenames will differ depending
- on the archive site in question; most sites keep Linux-related
- documents in the docs subdirectory of their Linux archive space. For
- example, on the FTP site sunsite.unc.edu, Linux files are stored in
- the directory /pub/Linux, with Linux-related documentation being found
- in /pub/Linux/docs.
- Examples of available online documents are the Linux FAQ, a
- collection of frequently asked questions about Linux; the Linux HOWTO
- documents, each describing a specific aspect of the system---including
- the Installation HOWTO, the Printing HOWTO, and the Ethernet HOWTO;
- and, the Linux META-FAQ, a list of other sources of Linux information
- on the Internet.
- Most of these documents are also regularly posted to one or more
- Linux-related USENET newsgroups; see Section 1.9.4 below.
-
- 1.9.2 Linux on the World Wide Web
-
- The Linux Documentation Home Page is available for World Wide Web
- users at the URL
-
- http://sunsite.unc.edu/mdw/linux.html
-
- This page contains many HOWTOs and other documents in HTML format, as
- well as pointers to other sites of interest to Linux users.
-
- 1.9.3 Books and other published works
-
- At this time, there are few published works specifically about Linux.
- Most noteworthy are the books from the Linux Documentation Project,
- a project carried out over the Internet to write and distribute a
- bona fide set of ``manuals'' for Linux. These manuals are analogues
- to the documentation sets available with commercial versions of UNIX:
- they cover everything from installing Linux, to using and running the
- system, programming, networking, kernel development, and more.
- The Linux Documentation Project manuals are available via anonymous
- FTP from the Internet, as well as via mail order from several sources.
- 1.9. Sources of Linux Information 34
- _______________________________________________________________________
-
- Appendix A lists the manuals which are available and covers means of
- obtaining them in detail.
- There are not many books specifically about Linux currently
- available. However, there are a large number of books about UNIX in
- general which are certainly applicable to Linux---as far as using and
- programming the system is concerned, Linux does not differ greatly
- from other implementations of UNIX. In short, almost everything you
- want to know about using and programming Linux can be found in sources
- meant for a general UNIX audience. In fact, this book is meant to be
- complemented by the large library of UNIX books currently available;
- here, we present the most important Linux-specific details and hope
- that you will look to other sources for more in-depth information.
- Armed with a number of good books about using UNIX, as well as
- the book you hold in your hands, you should be able to tackle just
- about anything. Appendix A includes a list of highly-recommended UNIX
- books, both for UNIX newcomers and UNIX wizards alike.
- There is also a monthly magazine about Linux, called the Linux
- Journal. It is distributed worldwide, and is an excellent way to keep
- in touch with the many goings-on in the Linux community---especially
- if you do not have access to USENET news (see below). See Appendix A
- for information on subscribing to the Linux Journal.
-
- 1.9.4 USENET newsgroups
-
- USENET is a worldwide electronic news and discussion forum with
- a heavy contingent of so-called ``newsgroups''---discussion areas
- devoted to a particular topic. Much of the development of Linux
- has been done over the waves of the Internet and USENET, and not
- suprisingly there are a number of USENET newsgroups available for
- discussions about Linux.
- The original Linux newsgroup was alt.os.linux, and was created to
- move some of the discussions about Linux out of comp.os.minix and the
- various mailing lists. Soon, the traffic on alt.os.linux grew to be
- large enough that a newsgroup in the comp hierarchy was warranted; a
- vote was taken in February of 1992, and comp.os.linux was created.
- comp.os.linux quickly became one of the most popular (and loudest)
- USENET groups; more popular than any other comp.os group. In December
- of 1992, a vote was taken to split the newsgroup in order to reduce
- traffic; only comp.os.linux.announce passed this vote. In July of
- 1993, the group was finally split into the new hierarchy. Almost 2000
- people voted in the comp.os.linux reorganization, making it one of the
- largest USENET Call For Votes ever.
- If you do not have direct USENET access, but are able to send
- and receive electronic mail from the Internet, there are mail-to-news
- gateways available for each of the newsgroups below.
-
- comp.os.linux.announce
- comp.os.linux.announce is a moderated newsgroup for
- announcements and important postings about the Linux
- system (such as bug reports, important patches to
- 1.9. Sources of Linux Information 35
- _______________________________________________________________________
-
- software, and so on). If you read any Linux newsgroups
- at all, read this one. Often, the important postings in
- this group are not crossposted to other groups. This
- group also contains many periodic postings about Linux,
- including many of the online documents described in the
- last section and listed in Appendix A.
-
- Postings to this newsgroup must be approved by the
- moderators, Matt Welsh and Lars Wirzenius. If you wish
- to submit and article to this group, in most cases
- you can simply post the article as you normally would
- (using Pnews or whatever posting software that you have
- available); the news software will automatically forward
- the article to the moderators for approval. However, if
- your news system is not set up correctly, you may need
- to mail the article directly; the submission address is
- linux-announce@tc.cornell.edu.
- The rest of the Linux newsgroups listed below are
- unmoderated.
-
- comp.os.linux.help
- This is the most popular Linux newsgroup. It is
- for questions and answers about using, setting up, or
- otherwise running a Linux system. If you are having
- problems with Linux, you may post to this newsgroup, and
- hopefully receive a reply from someone who might be able
- to help. However, it is strongly suggested that you read
- all of the available Linux documentation before posting
- questions to this newsgroup.
-
- comp.os.linux.admin
- This newsgroup is for questions and discussion about
- running a Linux system, most commonly in an active, multi-
- user environment. Any discussion about administrative
- issues of Linux (such as packaging software, making
- backups, handling users, and so on) is welcome here.
-
- comp.os.linux.development
- This is a newsgroup for discussions about development of
- the Linux system. All issues related to kernel and
- system software development should be discussed here. For
- example, if you are writing a kernel driver and need help
- with certain aspects of the programming, this would be the
- place to ask. This newsgroup is also for discussions
- about the direction and goals behind the Linux development
- effort, as described (somewhat) in Section 1.6.
- It should be noted that this newsgroup is not
- (technically) for discussions about development of
- software for Linux, but rather for discussions of
- development of Linux. That is, issues dealing with
- 1.9. Sources of Linux Information 36
- _______________________________________________________________________
-
- applications programming under Linux should be discussed
- in another Linux newsgroup; comp.os.linux.development is
- about developing the Linux system itself, including the
- kernel, system libraries, and so on.
-
- comp.os.linux.misc
- This newsgroup is for all discussion which doesn't quite
- fit into the other available Linux groups. In particular,
- advocacy wars (the incessant ``Linux versus Windows NT''
- thread, for example), should be waged here, as opposed
- to in the technical Linux groups. Any nontechnical or
- metadiscourse about the Linux system should remain in
- comp.os.linux.misc.
-
- It should be noted that the newsgroup comp.os.linux, which was
- originally the only Linux group, has been superseded by the new
- hierarchy of groups. If you have access to comp.os.linux, but not to
- the newer Linux groups listed above, encourage your news administrator
- to create the new groups on your system.
-
- 1.9.5 Internet mailing lists
-
- If you have access to Internet electronic mail, you can participate
- in a number of mailing lists even if you do not have USENET access.
- Note that if you are not directly on the Internet, you can join one
- of these mailing lists as long as you are able to exchange electronic
- mail with the Internet (for example, UUCP, FidoNET, CompuServe, and
- other networks all have access to Internet mail).
- The ``Linux Activists'' mailing list is primarily for Linux
- developers and people interested in aiding the development process.
- This is a ``multi-channel'' mailing list, in which you join one or
- more ``channels'' based on your particular interests. Some of the
- available channels include: NORMAL, for general Linux-related issues;
- KERNEL, for kernel development; GCC, for discussions relating to the
- gcc compiler and library development; NET, for discussions about the
- TCP/IP networking code; DOC, for issues relating to writing and
- distributing Linux documentation; and more.
- For more information about the Linux Activists mailing list, send
- mail to
-
- linux-activists@niksula.hut.fi
-
- You will receive a list of currently available channels, including
- information on how to subscribe and unsubscribe to particular channels
- on the list.
- Quite a few special-purpose mailing lists about and for Linux exist
- as well. The best way to find out about these is to watch the Linux
- USENET newsgroups for announcements, as well as to read the list of
- publicly-available mailing lists, periodically posted to the USENET
- group news.answers.
- 1.10. Getting Help 37
- _______________________________________________________________________
-
- 1.10 Getting Help
-
- You will undoubtedly require some degree of assistance during your
- adventures in the Linux world. Even the most wizardly of UNIX wizards
- occasionally is stumped by some quirk or feature of Linux, and it's
- important to know how and where to find help when you need it.
- The primary means of getting help in the Linux world are via
- Internet mailing lists and USENET newsgroups, as discussed in
- Section 1.9. If you don't have online access to these sources, you
- might be able to find comparable Linux discussion forums on other
- online services, such as on local BBS's, CompuServe, and so on.
- A number of businesses are providing commercial support for Linux.
- This will allow you to pay a ``subscription fee'' which will allow you
- to call the consultants for help with your Linux problems. Appendix B
- contains a list of Linux vendors, some of which provide commercial
- support. However, if you have access to USENET and Internet mail, you
- may find the free support found there to be just as useful.
- Keeping the following suggestions in mind will greatly improve your
- experiences with Linux and will guarantee you more success in finding
- help to your problems.
- Consult all available documentation...first! The first thing you
- should do when encountering a problem is consult the various sources
- of information listed in Section 1.9 and Appendix A. These documents
- were laboriously written for people like you---people who need help
- with the Linux system. Even books written for UNIX in general are
- applicable to Linux, and you should take advantage of them. More than
- likely, you will find the answer to your problems somewhere in this
- documentation, as impossible as it may seem.
- If you have access to USENET news or any of the Linux-related
- mailing lists, be sure to actually read the information there before
- posting for help with your problem. Many times, solutions to common
- problems are not easy to find in documentation, and instead are
- well-covered in the newsgroups and mailing lists devoted to Linux. If
- you only post to these groups, and don't actually read them, you are
- asking for trouble.
- Learn to appreciate self-maintenance. In most cases, it is
- preferable to do as much independent research and investigation into
- the problem as possible before seeking outside help. After all, you
- asked for it, by running Linux in the first place! Remember that
- Linux is all about hacking and fixing problems yourself. It is not
- a commercial operating system, nor does it try to look like one.
- Hacking won't kill you. In fact, it will teach you a great deal about
- the system to investigate and solve problems yourself---maybe even
- enough to one day call yourself a Linux guru. Learn to appreciate the
- value of hacking the system, and how to fix problems yourself. You
- can't expect to run a complete, homebrew Linux system without some
- degree of handiwork.
- Remain calm. It is vital to refrain from getting frustrated with
- the system, at all costs. Nothing is earned by taking an axe---or
- worse, a powerful electromagnet---to your Linux system in a fit of
- 1.10. Getting Help 38
- _______________________________________________________________________
-
- anger. The authors have found that a large punching bag or similar
- inanimate object is a wonderful way to relieve the occasional stress
- attack. As Linux matures and distributions become more reliable, we
- hope that this problem will go away. However, even commercial UNIX
- implementations can be tricky at times. When all else fails, sit
- back, take a few deep breaths, and go after the problem again when you
- feel relaxed. Your mind and conscience will be clearer.
- Refrain from posting spuriously. Many people make the mistake
- of posting or mailing messages pleading for help prematurely. When
- encountering a problem, do not---we repeat, do not---rush immediately
- to your nearest terminal and post a message to one of the Linux
- USENET newsgroups. Often, you will catch your own mistake five
- minutes later and find yourself in the curious situation of defending
- your own sanity in a public forum. Before posting anything any of
- the Linux mailing lists or newsgroups, first attempt to resolve the
- problem yourself and be absolutely certain what the problem is. Does
- your system not respond when switched on? Perhaps the machine is
- unplugged.
- If you do post for help, make it worthwhile. If all else fails,
- you may wish to post a message for help in any of the number of
- electronic forums dedicated to Linux, such as USENET newsgroups and
- mailing lists. When posting, remember that the people reading your
- post are not there to help you. The network is not your personal
- consulting service. Therefore, it is important to remain as polite,
- terse, and informative as possible.
- How can one accomplish this? First, you should include as much
- (relevant) information about your system and your problem as possible.
- Posting the simple request, ``I cannot seem to get e-mail to work''
- will probably get you nowhere unless you include information on your
- system, what software you are using, what you have attempted to do so
- far and what the results were. When including technical information,
- it is usually a good idea to include general information on the
- version(s) of your software (Linux kernel version, for example), as
- well as a brief summary of your hardware configuration. However,
- don't overdo it---including information on the brand and type of
- monitor that you have probably is irrelevant if you're trying to
- configure networking software.
- Secondly, remember that you need to make some attempt---however
- feeble---at solving your problem before you go to the Net. If you
- have never attempted to set up electronic mail, for instance, and
- first decide to ask folks on the Net how to go about doing it, you are
- making a big mistake. There are a number of documents available (see
- the Section 1.9) on how to get started with many common tasks under
- Linux. The idea is to get as far along as possible on your own and
- then ask for help if and when you get stuck.
- Also remember that the people reading your message, however
- helpful, may occasionally get frustrated by seeing the same problem
- over and over again. Be sure to actually read the Linux newsgroups
- and mailing lists before posting your problems. Many times, the
- solution to your problem has been discussed repeatedly, and all that's
- 1.10. Getting Help 39
- _______________________________________________________________________
-
- required to find it is to browse the current messages.
- Lastly, when posting to electronic newsgroups and mailing lists,
- try to be as polite as possible. It is much more effective
- and worthwhile to be polite, direct, and informative---more people
- will be willing to help you if you master a humble tone. To be
- sure, the flame war is an art form across many forms of electronic
- communication, but don't allow that to preoccupy your and other
- people's time. Save the network undue wear and tear by keeping
- bandwidth as low as possible, and by paying as much attention to other
- sources of information which are available to you. The network is
- an excellent way to get help with your Linux problems---but it is
- important to know how to use the network effectively.
-
-
-
-
-
-
-
-
- Chapter 2
-
-
-
-
- Obtaining and Installing Linux
-
-
-
- In this chapter, we'll describe how to obtain the Linux software, in
- the form of one of the various pre-packaged distributions, and how to
- install the distribution that you choose.
- As we have mentioned, there is no single ``official'' distribution
- of the Linux software; there are, in fact, many distributions, each
- of which serves a particular purpose and set of goals. These
- distributions are available via anonymous FTP from the Internet, on
- BBS systems worldwide, and via mail on diskette, tape, and CD-ROM.
- Here, we present a general overview of the installation process.
- Each distribution has its own specific installation instructions, but
- armed with the concepts presented here you should be able to feel your
- way through any installation. Appendix A lists sources of information
- for installation instructions and other help, if you're at a total
- loss.
- This book contains additional sections detailing the Slackware
- distribution of Linux.
-
- 2.1 Distributions of Linux
-
- Because Linux is free software, no single organization or entity is
- responsible for releasing and distributing the software. Therefore,
- anyone is free to put together and distribute the Linux software, as
- long as the restrictions in the GPL are observed. The upshot of this
- is that there are many distributions of Linux, available via anonymous
- FTP or via mail order.
- You are now faced with the task of deciding upon a particular
- distribution of Linux which suits your needs. Not all distributions
- are alike. Many of them come with just about all of the software
- you'd need to run a complete system---and then some. Other Linux
- distributions are ``small'' distributions intended for users without
- copious amounts of diskspace. Many distributions contain only the
- core Linux software, and you are expected to install larger software
- packages, such as the X Window System, yourself. (In Chapter 4 we'll
- show you how.)
- The Linux Distribution HOWTO (see Appendix A) contains a list
-
-
- 40
- 2.1. Distributions of Linux 41
- _______________________________________________________________________
-
- of Linux distributions available via the Internet as well as mail
- order. Appendix B also lists contact addresses for a number of
- Linux mail-order vendors. If you purchased this book in printed the
- form, the publisher should also be able to provide you with a Linux
- distribution or tell you who can.
- How can you decide among all of these distributions? If you
- have access to USENET news, or another computer conferencing system,
- you might want to ask there for personal opinions from people who
- have installed Linux. Even better, if you know someone who has
- installed Linux, ask them for help and advice. There are many
- factors to consider when choosing a distribution, however, everyone's
- needs and opinions are different. In actuality, most of the popular
- Linux distributions contain roughly the same set of software, so the
- distribution that you select is more or less arbitrary.
- This book contains information on installing the popular Slackware
- and Slackware Pro distributions of Linux.
-
- 2.1.1 Getting Linux from the Internet
-
- If you have access to the Internet, the easiest way to obtain Linux is
- via anonymous FTP.(1) Appendix C lists a number of FTP archive sites
- which carry Linux software. One of these is sunsite.unc.edu, and the
- various Linux distributions can be found in the directory
-
- /pub/Linux/distributions
-
- there.
- Many distributions are released via anonymous FTP as a set of
- disk images. That is, the distribution consists of a set of
- files, and each file contains the binary image of a floppy. In
- order to copy the contents of the image file onto the floppy, you
- can use the RAWRITE.EXE program under MS-DOS. This program copies,
- block-for-block, the contents of a file to a floppy, without regard
- for disk format.(2)
- RAWRITE.EXE is available on the various Linux FTP sites, including
- sunsite.unc.edu in the directory
-
- /pub/Linux/system/Install/rawwrite
-
- ----------------------------
- 1. If you do not have direct Internet access, you can obtain Linux
- via the ftpmail service, provided that you have the ability to
- exchange e-mail with the Internet. See Appendix C for details.
- 2. If you have access to a UNIX workstation with a floppy drive, you
- can also use the dd command to copy the file image directly to the
- floppy. A command such as ``dd of=/dev/rfd0 if=foo bs=18k'' will
- ``raw write'' the contents of the file foo to the floppy device on a
- Sun workstation. Consult your local UNIX gurus for more information
- on your system's floppy devices and the use of dd.
- 2.1. Distributions of Linux 42
- _______________________________________________________________________
-
- Therefore, in many cases, you simply download the set of diskette
- images, and use RAWRITE.EXE with each image in turn to create a set
- of diskettes. You boot from the so-called ``boot diskette'' and
- you're ready to roll. The software is usually installed directly from
- the floppies, although some distributions allow you to install from
- an MS-DOS partition on your hard drive. Some distributions allow
- you to install over a TCP/IP network. The documentation for each
- distribution should describe these installation methods if they are
- available.
- Other Linux distributions are installed from a set of MS-DOS format
- floppies. For example, the Slackware distribution of Linux requires
- only the boot and root diskettes to be created using RAWRITE.EXE. The
- rest of the diskettes are copied to MS-DOS format diskettes using the
- MS-DOS COPY command. The system installs the software directly from
- the MS-DOS floppies. This saves you the trouble of having to use
- RAWRITE.EXE for many image files, although it requires you to have
- access to an MS-DOS system to create the diskettes.
- Each distribution of Linux available via anonymous FTP should
- include a README file describing how to download and prepare the
- diskettes for installation. Be sure to read all of the available
- documentation for the release that you are using.
- When downloading the Linux software, be sure to use binary mode
- for all file transfers (with most FTP clients, the command ``binary''
- enables this mode).
- See Section 2.1.4, below, for information on obtaining the
- Slackware distribution from the Internet.
-
- 2.1.2 Getting Linux from other online sources
-
- If you have access to another computer network such as CompuServe
- or Prodigy, there may be a means to download the Linux software
- from these sources. In addition, many bulletin board (BBS) systems
- carry Linux software. A list of Linux BBS sites is given in
- Appendix D. Not all Linux distributions are available from these
- computer networks, however---many of them, especially the various
- CD-ROM distributions, are only available via mail order.
-
- 2.1.3 Getting Linux via mail order
-
- If you don't have Internet or BBS access, many Linux distributions are
- available via mail order on diskette, tape, or CD-ROM. Appendix B
- lists a number of these distributors. Many of them accept credit
- cards as well as international orders, so if you're not in the United
- States or Canada you still should be able to obtain Linux in this way.
- Linux is free software, although distributors are allowed by the
- GPL to charge a fee for it. Therefore, ordering Linux via mail
- order might cost you between US$30 and US$150, depending on the
- distribution. However, if you know someone who has already purchased
- or downloaded a release of Linux, you are free to borrow or copy their
- software for your own use. Linux distributors are not allowed to
- 2.1. Distributions of Linux 43
- _______________________________________________________________________
-
- restrict the license or redistribution of the software in any way.
- If you are thinking about installing an entire lab of machines with
- Linux, for example, you only need to purchase a single copy of one of
- the distributions, which can be used to install all of the machines.
-
- 2.1.4 Getting Slackware
-
- Slackware is a popular distribution of Linux maintained by Patrick
- Volkerding.(3) It is easy to install and fairly complete, and may be
- obtained both from the Internet as well as on CD-ROM from a number of
- vendors (see Appendix B).
- The Slackware distribution consists of a number of ``disk sets'',
- each one containing a particular type of software (for example, the d
- disk set contains development tools such as the gcc compiler, and the
- x disk set contains the X Window System software). You can elect to
- install whatever disk sets you like, and can install new ones later.
- The version of Slackware described here is 2.0.0, of 25 June 1994.
- Installation of later versions of Slackware should be very similar to
- the information given here.
-
- 2.1.4.1 Slackware disk sets
-
- Unfortunately, Slackware does not maintain a complete list of
- diskspace requirements for each disk set. You need at least 7
- megabytes to install just the ``A'' series of disks; a very rough
- estimate of the required diskspace would be 2 or 2.5 megabytes per
- disk.
- The following disk sets are available:
-
- A The base system. Enough to get up and running and have
- elvis and comm programs available. Based around the 1.0.9
- Linux kernel, and the new filesystem standard (FSSTND).
- These disks are known to fit on 1.2M disks, although the
- rest of Slackware won't. If you have only a 1.2M floppy,
- you can still install the base system, download other
- disks you want and install them from your hard drive.
-
- AP Various applications and add ons, such as the manual
- pages, groff, ispell (GNU and international versions),
- term, joe, jove, ghostscript, sc, bc, and the quota
- patches.
-
- D Program development. GCC/G++/Objective C 2.5.8, make
- (GNU and BSD), byacc and GNU bison, flex, the 4.5.26 C
- libraries, gdb, kernel source for 1.0.9, SVGAlib, ncurses,
- clisp, f2c, p2c, m4, perl, rcs.
-
- ----------------------------
- 3. Patrick Volkerding can be reached on the Internet at
- volkerdi@mhd1.moorhead.msus.edu.
- 2.1. Distributions of Linux 44
- _______________________________________________________________________
-
- E GNU Emacs 19.25.
-
- F A collection of FAQs and other documentation.
-
- I Info pages for GNU software. Documentation for various
- programs readable by info or Emacs.
-
- N Networking. TCP/IP, UUCP, mailx, dip, deliver, elm, pine,
- smail, cnews, nn, tin, trn.
-
- OOP Object Oriented Programming. GNU Smalltalk 1.1.1, and the
- Smalltalk Interface to X (STIX).
- Q Alpha kernel source and images (currently contains Linux
- 1.1.18).
-
- TCL Tcl, Tk, TclX, blt, itcl.
-
- Y Games. The BSD games collection, and Tetris for
- terminals.
-
- X The base XFree86 2.1.1 system, with libXpm, fvwm 1.20, and
- xlock added.
-
- XAP X applications: X11 ghostscript, libgr13, seyon, workman,
- xfilemanager, xv 3.01, GNU chess and xboard, xfm 1.2,
- ghostview, and various X games.
-
- XD X11 program development. X11 libraries, server linkkit,
- PEX support.
-
- XV Xview 3.2 release 5. XView libraries, and the Open Look
- virtual and non-virtual window managers.
- IV Interviews libraries, include files, and the doc and idraw
- apps.
-
- OI ParcPlace's Object Builder 2.0 and Object Interface
- Library 4.0, generously made available for Linux
- developers according to the terms in the "copying" notice
- found in these directories. Note that these only work
- with libc-4.4.4, but a new version may be released once
- gcc 2.5.9 is available.
-
- T The TeX and LaTeX text formatting systems.
-
- You must get the ``A'' disk set; the rest are optional. We suggest
- installing the A, AP, and D sets, as well as the X set if you plan to
- run the X Window System.
- 2.1. Distributions of Linux 45
- _______________________________________________________________________
-
- 2.1.4.2 Getting Slackware from the Internet
-
- The Slackware release of Linux may be found on any number of FTP sites
- worldwide. Appendix C lists several of the Linux FTP sites; we
- suggest that you try to find the software on the FTP site nearest you,
- to reduce net traffic. However, two of the major Linux FTP archives
- are sunsite.unc.edu and tsx-11.mit.edu.
- The Slackware release may be found at least on the following sites:
-
- o sunsite.unc.edu:/pub/Linux/distributions/slackware
-
- o tsx-11.mit.edu:/pub/linux/packages/slackware
-
- o ftp.cdrom.com:/pub/linux/slackware
-
- ftp.cdrom.com is Slackware's home site.
-
- 2.1.4.2.1 Downloading the files You should download the following
- files using FTP. Be sure to use binary mode when transferring.
- Appendix C contains a complete tutorial on using FTP.
-
- o The various README files, as well as SLACKWARE_FAQ. Be sure to
- read these files before attempting to install the software, to get
- any updates or changes to this document.
-
- o A bootdisk image. This is a file that you will write to a floppy
- to create the Slackware boot disk. If you have a 1.44 megabyte
- boot floppy (3.5"), look in the directory bootdsks.144. If you
- have a 1.2 megabyte boot floppy (5.25"), look in the directory
- bootdsks.12.
-
- You need one of the following bootdisk files.
-
-
- -- bare.gz. This is a boot floppy that has only IDE hard drive
- drivers. (No SCSI, CD-ROM, or networking support.) Use this
- if you only have an IDE hard drive controller and aren't going
- to be installing over the network or from CD-ROM.
-
- -- cdu31a.gz. Contains IDE, SCSI, and the Sony CDU31A/33A
- driver.
-
- -- mitsumi.gz. Contains IDE, SCSI, and the Mitsumi CD-ROM
- driver.
-
- -- modern.gz. An experimental boot disk with a newer kernel, and
- all drivers except those for network cards and the Sony 535
- CD-ROM.
-
- -- net.gz. Contains IDE and network drivers.
- 2.1. Distributions of Linux 46
- _______________________________________________________________________
-
- -- sbpcd.gz. Contains IDE, SCSI, and SoundBlaster Pro/Panasonic
- CD-ROM drivers.
-
- -- scsi.gz. Contains IDE, SCSI, and SCSI CD-ROM drivers.
-
- -- scsinet.gz. Contains IDE, SCSI, SCSI CD-ROM, and network
- drivers.
-
- -- sony535.gz. Contains IDE, SCSI, and Sony 535/531 CD-ROM
- drivers.
-
- -- xt.gz. Contains IDE and XT hard drive drivers.
-
-
- You need only one of the above bootdisk images, depending on the
- hardware that you have in your system.
-
- The issue here is that some hardware drivers conflict with each
- other in strange ways, and instead of attempting to debug hardware
- problems on your system it's easier to use a boot floppy image
- with only certain drivers enabled. Most users should try scsi.gz
- or bare.gz.
-
- o A rootdisk image. This is a file that you will write to a floppy
- to create the Slackware installation disk. As with the bootdisk
- image, look in rootdsks.144 or rootdsks.12 depending on the type
- of boot floppy drive that you have.
-
- You need one of the following files:
-
-
- -- color144.gz. The menu-based color installation disk for 1.44
- megabyte drives. Most users should use this rootdisk.
-
- -- umsds144.gz. A version of the color144 disk for installing
- with the UMSDOS filesystem, which allows you to install Linux
- onto a directory of an MS-DOS filesystem. This installation
- method is not discussed in detail here, but it will prevent
- you from having to repartition your drive. More on this
- later.
-
- -- tty144.gz. The terminal-based installation disk for 1.44
- megabyte drives. If color144.gz doesn't work for you, try
- tty144.gz instead.
-
- -- colrlite.gz. The menu-based color installation disk for 1.2
- megabyte drives.
-
- -- umsds12.gz. A version of the colrlite disk for installing
- with the UMSDOS filesystem. See the description of
- 2.1. Distributions of Linux 47
- _______________________________________________________________________
-
- umsds144.gz, above.
-
- -- tty12.gz. The terminal-based installation disk for 1.2
- megabyte drives. Use this rootdisk if you have a 1.2 megabyte
- boot floppy and colrlite.gz doesn't work for you.
-
-
- Again, you need only one of the above rootdisk images, depending
- on the type of boot floppy drive that you have.
-
- o GZIP.EXE. This is an MS-DOS executable of the gzip compression
- program used to compress the boot and rootdisk files (the .gz
- extension on the filenames indicates this). This can be found in
- the install directory.
-
- o RAWRITE.EXE. This is an MS-DOS program that will write the
- contents of a file (such as the boot and rootdisk images) directly
- to a floppy, without regard to format. You will use RAWRITE.EXE
- to create the boot and root floppies. This can be found in the
- install directory as well.
-
- You only need RAWRITE.EXE and GZIP.EXE if you plan to create the
- boot and root floppies from an MS-DOS system. If you have access
- to a UNIX workstation with a floppy drive instead, you can create
- the floppies from there, using the dd command. See the man page
- for dd and ask your local UNIX administrators for assistance.
-
- o The files in the directories slakware/a1, slakware/a2, and
- slakware/a3. These files make up the ``A'' disk set of the
- Slackware distribution. They are required. Later, you will
- copy these files to MS-DOS floppies for installation (or, you can
- install from your hard drive). Therefore, when you download these
- files, keep them in separate directories; don't mix the a1 files
- with the a2 files, and so on.
-
- Be sure that you get the files without periods in the filenames as
- well. That is, within FTP, use the command ``mget *'' instead of
- ``mget *.*''.
-
- o The files in the directories ap1, ap2, etc., depending on what
- disk sets you are installing. For example, if you are installing
- the ``X'' disk series, get the files in the directories x1 through
- x5. As with the ``A'' disk set, above, be sure to keep the files
- in separate directories when you download them.
-
- 2.1.4.3 Getting Slackware on CD-ROM
-
- Slackware is also available on CD-ROM. Most Slackware CD-ROMs simply
- contain a copy of the files as they appear on the FTP archive sites,
- as described above. Therefore, if you have a Slackware CD-ROM, you
- 2.1. Distributions of Linux 48
- _______________________________________________________________________
-
- have all of the files that you need.
- You will have to create a boot and root floppy from the files on
- the CD-ROM. See Section 2.1.4.2.1, above, for a discussion on the
- available boot and root disk images.
- First, decide which boot and root disk images you will use. They
- should all be on the CD-ROM. Below, we will describe how to create
- these floppies.
-
- 2.1.4.4 Installation methods
-
- Slackware provides several different means of installing the software.
- The most popular is installing from an MS-DOS partition on your hard
- drive; another is to install from a set of MS-DOS floppies created
- from the disk sets that you downloaded.
- If you have Slackware on a CD-ROM, you can install the files
- directly from there. The Slackware Pro distribution, from Morse
- Telecommunications, allows you to install Slackware so that many files
- are accessed directly on the CD-ROM. This can save a great deal
- of space on your hard drive, with the tradeoff that running certain
- applications will be slower.
-
- 2.1.4.4.1 Creating the boot and root floppies You must create floppies
- from the bootdisk and rootdisk images that you downloaded (or have on
- CD-ROM), no matter what type of installation you will be doing.
- On an MS-DOS system, you must uncompress the bootdisk and rootdisk
- images using GZIP.EXE. For example, if you're using the bare.gz
- bootdisk image, issue the MS-DOS command:
-
- C:\> GZIP -D BARE.GZ
-
- which will uncompress bare.gz and leave you with the file bare. If
- you are installing from CD-ROM, you can copy the bootdisk image (such
- as bare.gz) to you hard drive, and run GZIP.EXE from the CD-ROM to
- uncompress it.
- You must similarly uncompress the rootdisk image. For example, if
- you are using the rootdisk color144.gz, issue the command:
-
- C:\> GZIP -D COLOR144.GZ
-
- which will uncompress the file and leave you with color144.
- Next, you must have two high-density MS-DOS formatted floppies.
- (They must be of the same type; that is, if your boot floppy drive
- is a 3.5" drive, both floppies must be high-density 3.5" disks.) You
- will use RAWRITE.EXE to write the boot and rootdisk images to the
- floppies.
- Issue the command:
-
- C:\> RAWRITE
-
- Answer the prompts for the name of the file to write (such as bare,
- 2.1. Distributions of Linux 49
- _______________________________________________________________________
-
- or color144) and the floppy to write it to (such as A:). RAWRITE
- will copy the file, block-by-block, directly to the floppy. Also use
- RAWRITE for the root disk image. When you're done, you'll have two
- floppies: one containing the boot disk, the other containing the root
- disk. Note that these two floppies will no longer be readable by
- MS-DOS (they are ``Linux format'' floppies, in some sense).
- Be sure that you're using brand-new, error-free floppies. The
- floppies must have no bad blocks on them.
- Note that you do not need to be running MS-DOS in order to install
- Slackware. However, running MS-DOS makes it easier to create the boot
- and root floppies, and it makes it easier to install the software (as
- you can install directly from an MS-DOS partition on your system). If
- you are not running MS-DOS on your system, you can use someone else's
- MS-DOS system just to create the floppies, and install from there.
- It is not necessary to use GZIP.EXE and RAWRITE.EXE under MS-DOS to
- create the boot and root floppies, either. You can use the gzip and
- dd commands on a UNIX system to do the same job. (For this, you will
- need a UNIX workstation with a floppy drive, of course.) For example,
- on a Sun workstation with the floppy drive on device /dev/rfd0, you
- can use the commands:
-
- $ gunzip bare.gz
- $ dd if=bare of=/dev/rfd0 obs=18k
-
- You must provide the appropriate block size argument (the obs
- argument) on some workstations (e.g., Suns) or this will fail. If you
- have problems the man page for dd will be instructive.
-
- 2.1.4.4.2 Preparing for installation from hard drive If you're
- planning on installing the Slackware software directly from the
- hard drive (which is often faster and more reliable than a floppy
- installation), you will need an MS-DOS partition on the system that
- you're installing Slackware to.
- Note: If you plan to install Slackware from an MS-DOS partition,
- that partition must NOT be compressed with DoubleSpace, Stacker,
- or any other MS-DOS drive compression utility. Linux currently
- cannot read DoubleSpace/Stacker MS-DOS partitions directly. (You can
- access them via the MS-DOS Emulator, but that is not an option when
- installing the Linux software.)
- To prepare for hard drive installation, simply create a directory
- on the hard drive to store the Slackware files. For example,
-
- C:\> MKDIR SLACKWAR
-
- will create the directory C:\SLACKWAR to hold the Slackware files.
- Under this directory, you should create subdirectories A1, A2, and so
- on, for each disk set that you downloaded, using the MKDIR command.
- All of the files from the A1 disk should go into the directory
- SLACKWAR\A1, and so forth.
- 2.2. Preparing to Install Linux 50
- _______________________________________________________________________
-
- 2.1.4.4.3 Preparing for floppy installation If you wish to install
- Slackware from floppies instead of the hard drive, you'll need to have
- one blank, MS-DOS formatted floppy for each Slackware disk that you
- downloaded. These disks must be high-density format.
- The A disk set (disks A1 through A3) may be either 3.5" or 5.25"
- floppies. However, the rest of the disk sets must be 3.5" disks.
- Therefore, if you only have a 5.25" floppy drive, you'll need to
- borrow a 3.5" drive from someone in order to install disk sets other
- than A. (Or, you can install from the hard drive, as explained in the
- previous section.)
- To make the disks, simply copy the files from each Slackware
- directory onto an MS-DOS formatted floppy, using the MS-DOS COPY
- command. As so:
-
- C:\> COPY A1\*.* A:
-
- will copy the contents of the A1 disk to the floppy in drive A:. You
- should repeat this for each disk that you downloaded.
- You do not need to modify or uncompress the files on the disks
- in any way; you merely need to copy them to MS-DOS floppies. The
- Slackware installation procedure takes care of uncompressing the files
- for you.
-
- 2.1.4.4.4 Preparing for CD-ROM installation If you have Slackware on a
- CD-ROM, you are ready to install the software once you have created
- the boot and root floppies. The software will be installed directly
- from CD.
-
-
- 2.2 Preparing to Install Linux
-
- After you have obtained a distribution of Linux, you're ready to
- prepare your system for installation. This takes a certain degree
- of planning, especially if you're already running other operating
- systems. In the following sections we'll describe how to plan for the
- Linux installation.
-
- 2.2.1 Installation overview
-
- While each release of Linux is different, in general the method used
- to install the software is as follows:
-
- 1. Repartition your hard drive(s). If you have other operating
- systems already installed, you will need to repartition the drives
- in order to allocate space for Linux. This is discussed in
- Section 2.2.4, below.
-
- 2. Boot the Linux installation media. Each distribution of
- Linux has some kind of installation media---usually a ``boot
- floppy''---which is used to install the software. Booting this
- 2.2. Preparing to Install Linux 51
- _______________________________________________________________________
-
- media will either present you with some kind of installation
- program, which will step you through the Linux installation, or
- allow you to install the software by hand.
-
- 3. Create Linux partitions. After repartitioning to allocate space
- for Linux, you create Linux partitions on that empty space.
- This is accomplished with the Linux fdisk program, covered in
- Section 2.3.3.
-
- 4. Create filesystems and swap space. At this point, you will create
- one or more filesystems, used to store files, on the newly-created
- partitions. In addition, if you plan to use swap space, you will
- create the swap space on one of your Linux partitions. This is
- covered in Sections 2.3.4 and 2.3.5.
-
- 5. Install the software on the new filesystems. Finally, you will
- install the Linux software on your newly-created filesystems.
- After this, it's smooth sailing---if all goes well. This is
- covered in Section 2.3.6. Later, in Section 2.5, we describe what
- to do if anything goes wrong.
-
- Many distributions of Linux provide an installation program which
- will step you through the installation process, and automate one or
- more of the above steps for you. Keep in mind throughout this chapter
- that any number of the above steps may be automated for you, depending
- on the distribution.
- The Slackware distribution of Linux, covered in this book, only
- requires you to repartition your drive, using fdisk, and use the setup
- program to accomplish the other steps.
- Important hint: While preparing to install Linux, the best advice
- that we can give is to take notes during the entire procedure. Write
- down everything that you do, everything that you type, and everything
- that you see that might be out of the ordinary. The idea here is
- simple: if (or when!) you run into trouble, you want to be able
- to retrace your steps and find out what went wrong. Installing Linux
- isn't difficult, but there are many details to remember. You want
- to have a record of all of these details so that you can experiment
- with other methods if something goes wrong. Also, keeping a notebook
- of your Linux installation experience is useful when you want to ask
- other people for help, for example, when posting a message to one of
- the Linux-related USENET groups. Your notebook is also something that
- you'll want to show to your grandchildren someday.(4)
-
- ----------------------------
- 4. The author shamefully admits that he kept a notebook of all of his
- tribulations with Linux for the first few months of working with the
- system. It is now gathering dust on his bookshelf.
- 2.2. Preparing to Install Linux 52
- _______________________________________________________________________
-
- 2.2.2 Repartitioning concepts
-
- In general, hard drives are divided into partitions, where a single
- partition is devoted to a single operating system. For example, on
- one hard drive, you may have several separate partitions---one devoted
- to, say, MS-DOS, another to OS/2, and another to Linux.
- If you already have other software installed on your system, you
- may need to resize those partitions in order to free up space for
- Linux. You will then create one or more Linux partitions on the
- resulting free space for storing the Linux software and swap space.
- We call this process repartitioning.
- Many MS-DOS systems utilize a single partition inhabiting the
- entire drive. To MS-DOS, this partition is known as C:. If you have
- more than one partition, MS-DOS names them D:, E:, and so on. In a
- way, each partition acts like a separate hard drive.
- On the first sector of the disk is a master boot record along with
- a partition table. The boot record (as the name implies) is used to
- boot the system. The partition table contains information about the
- locations and sizes of your partitions.
- There are three kinds of partitions: primary, extended, and
- logical. Of these, primary partitions are used most often. However,
- because of a limit in the size of the partition table, you can only
- have four primary partitions on any given drive.
- The way around this four-partition limit is to use an extended
- partition. An extended partition doesn't hold any data by
- itself; instead, it acts as a ``container'' for logical partitions.
- Therefore, you could create one extended partition, covering the
- entire drive, and within it create many logical partitions. However,
- you may have only one extended partition per drive.
-
- 2.2.3 Linux partition requirements
-
- Before we explain how to repartition your drives, you need to have an
- idea of how much space you will be allocating for Linux. We will be
- discussing how to create these partitions later, in Section 2.3.3.
- On UNIX systems, files are stored on a filesystem, which is
- essentially a section of the hard drive (or other medium, such as
- CD-ROM or diskette) formatted to hold files. Each filesystem is
- associated with a specific part of the directory tree; for example,
- on many systems, there is a filesystem for all of the files in the
- directory /usr, another for /tmp, and so on. The root filesystem is
- the primary filesystem, which corresponds to the topmost directory, /.
-
- Under Linux, each filesystem lives on a separate partition on the
- hard drive. For instance, if you have a filesystem for / and another
- for /usr, you will need two partitions to hold the two filesystems.
- Before you install Linux, you will need to prepare filesystems for
- storing the Linux software. You must have at least one filesystem
- (the root filesystem), and therefore one partition, allocated to
- Linux. Many Linux users opt to store all of their files on the
- 2.2. Preparing to Install Linux 53
- _______________________________________________________________________
-
- root filesystem, which is in most cases easier to manage than several
- filesystems and partitions.
- However, you may create multiple filesystems for Linux if you
- wish---for example, you may want to use separate filesystems for /usr
- and /home. Those readers with UNIX system administration experience
- will know how to use multiple filesystems creatively. In Chapter 4 we
- discuss the use of multiple partitions and filesystems.
- Why use more than one filesystem? The most commonly stated reason
- is safety; if, for some reason, one of your filesystems is damaged,
- the others will (usually) be unharmed. On the other hand, if you
- store all of your files on the root filesystem, and for some reason
- the filesystem is damaged, then you may lose all of your files in one
- fell swoop. This is, however, rather uncommon; if you backup the
- system regularly you should be quite safe.(5)
- Another reason to use multiple filesystems is to divvy up storage
- between multiple hard drives. If you have, say, 40 megabytes free
- on one hard drive, and 50 megabytes free on another, you might want
- to create a 40-megabyte root filesystem on the first drive and a
- 50-megabyte /usr filesystem on the other. Currently it is not
- possible for a single filesystem to span multiple drives; if your free
- hard drive storage is fragmented between drives you will need to use
- multiple filesystems to utilize it all.
- In summary, Linux requires at least one partition, for the root
- filesystem. If you wish to create multiple filesystems, you will
- need a separate partition for each additional filesystem. Some
- distributions of Linux automatically create partitions and filesystems
- for you, so you may not need to worry about these issues at all.
- Another issue to consider when planning your partitions is swap
- space. If you wish to use swap space with Linux, you have two
- options. The first is to use a swap file which exists on one of your
- Linux filesystems. You will create the swap file for use as virtual
- RAM after you install the software. The second option is to create a
- swap partition, an individual partition to be used only as swap space.
- Most people use a swap partition instead of a swap file.
- A single swap file or partition may be up to 16 megabytes in size.
- If you wish to use more than 16 megabytes of swap, you can create
- multiple swap partitions or files---up to eight in all. For example,
- if you need 32 megabytes of swap, you can create two 16-megabyte swap
- partitions.
- Setting up a swap partition is covered in Section 2.3.4, and
- setting up a swap file in Chapter 4.
- Therefore, in general, you will create at least two partitions for
- Linux: one for use as the root filesystem, and the other for use as
- swap space. There are, of course, many variations on the above, but
- this is the minimal setup. You are not required to use swap space
- with Linux, but if you have less than 16 megabytes of physical RAM it
-
- ----------------------------
- 5. The author uses a single 200-megabyte filesystem for all of his
- Linux files, and hasn't had any problems (so far).
- 2.2. Preparing to Install Linux 54
- _______________________________________________________________________
-
- is strongly suggested that you do.
- Of course, you need to be aware of how much space these partitions
- will require. The size of your Linux filesystems (containing
- the software itself) depends greatly on how much software you're
- installing and what distribution of Linux you are using. Hopefully,
- the documentation that came with your distribution will give you an
- approximation of the space requirements. A small Linux system can
- use 20 megabytes or less; a larger system anywhere from 80 to 100
- megabytes, or more. Keep in mind that in addition to the space
- required by the software itself, you need to allocate extra space for
- user directories, room for future expansion, and so forth.
- The size of your swap partition (should you elect to use one)
- depends on how much virtual RAM you require. A rule of thumb is to
- use a swap partition that is twice the space of your physical RAM; for
- example, if you have 4 megabytes of physical RAM, an 8-megabyte swap
- partition should suffice. Of course, this is mere speculation---the
- actual amount of swap space that you require depends on the software
- which you will be running. If you have a great deal of physical RAM
- (say, sixteen megabytes or more), you may not wish to use swap space
- at all.
- Important note: Because of BIOS limitations, it is usually not
- possible to boot from partitions using cylinders numbered over 1023.
- Therefore, when setting aside space for Linux, keep in mind that you
- may not want to use a partition in the >1023-cylinder range for your
- Linux root filesystem. Linux can still use partitions with cylinders
- numbered over 1023, however, you may not be able to boot Linux from
- such a partition. This advice may seem premature, but it is important
- to know while planning your drive layout.
- If you absolutely must use a partition with cylinders numbered over
- 1023 for your Linux root filesystem, you can always boot Linux from
- floppy. This is not so bad, actually---it only takes a few seconds
- longer to boot than from the hard drive. At any rate, it's always an
- option.
-
- 2.2.4 Repartitioning your drives
-
- In this section, we'll describe how to resize your current partitions
- (if any) to make space for Linux. If you are installing Linux on
- a ``clean'' hard drive, you can skip this section and proceed to
- Section 2.3, below.
- The usual way to resize an existing partition is to delete it (thus
- destroying all of the data on that partition) and recreate it. Before
- repartitioning your drives, backup your system. After resizing the
- partitions, you can reinstall your original software from the backup.
- However, there are several programs available for MS-DOS which are
- able to resize partitions nondestructively. One of these is known as
- ``FIPS'', and can be found on many Linux FTP sites.
- Also, keep in mind that because you'll be shrinking your original
- partitions, you may not have space to reinstall everything. In this
- case, you need to delete enough unwanted software to allow the rest to
- 2.2. Preparing to Install Linux 55
- _______________________________________________________________________
-
- fit on the smaller partitions.
- The program used to repartition is known as fdisk. Each operating
- system has its own analogue of this program; for example, under
- MS-DOS, it is invoked with the FDISK command. You should consult
- your documentation for whatever operating systems you are currently
- running for information on repartitioning. Here, we'll discuss how to
- resize partitions for MS-DOS using FDISK, but this information should
- be easily extrapolated to other operating systems.
- Please consult the documentation for your current operating systems
- before repartitioning your drive. This section is meant to be a
- general overview of the process; there are many subtleties that we do
- not cover here. You can lose all of the software on your system if
- you do not repartition the drive correctly.
- A warning: Do not modify or create partitions for any other
- operating systems (including Linux) using FDISK under MS-DOS. You
- should only modify partitions for a particular operating system with
- the version of fdisk included with that operating system; for example,
- you will create Linux partitions using a version of fdisk for Linux.
- Later, in Section 2.3.3, we describe how to create Linux partitions,
- but for now we are concerned with resizing your current ones.
- Let's say that you have a single hard drive on your system,
- currently devoted entirely to MS-DOS. Hence, your drive consists
- of a single MS-DOS partition, commonly known as ``C:''. Because
- this repartitioning method will destroy the data on that partition,
- you need to create a bootable MS-DOS ``system disk'' which contains
- everything necessary to run FDISK and restore the software from backup
- after the repartitioning is complete.
- In many cases, you can use the MS-DOS installation disks for this
- purpose. However, if you need to create your own system disk, format
- a floppy with the command
-
- FORMAT /s A:
-
- Copy onto this floppy all of the necessary MS-DOS utilities (usually
- most of the software in the directory \DOS on your drive), as well as
- the programs FORMAT.COM and FDISK.EXE. You should now be able to boot
- this floppy, and run the command
-
- FDISK C:
-
- to start up FDISK.
- Use of FDISK should be self-explanatory, but consult the MS-DOS
- documentation for details. When you start FDISK, use the menu
- option to display the partition table, and write down the information
- displayed there. It is important to keep a record of your original
- setup in case you want to back out of the Linux installation.
- To delete an existing partition, choose the FDISK menu option
- ``Delete an MS-DOS Partition or Logical DOS Drive''. Specify the type
- of partition that you wish to delete (primary, extended, or logical)
- and the number of the partition. Verify all of the warnings. Poof!
- 2.3. Installing the Linux software 56
- _______________________________________________________________________
-
- To create a new (smaller) partition for MS-DOS, just choose the
- FDISK option ``Create an MS-DOS Partition or Logical DOS Drive''.
- Specify the type of partition (primary, extended, or logical), and
- the size of the partition to create (specified in megabytes). FDISK
- should create the partition and you're ready to roll.
- After you're done using FDISK, you should exit the program and
- reformat any new partitions. For example, if you resized the first
- DOS partition on your drive (C:) you should run the command
-
- FORMAT /s C:
-
- You may now reinstall your original software from backup.
-
-
- 2.3 Installing the Linux software
-
- After you have resized your existing partitions to make space for
- Linux, you are ready to install the software. Here is a brief
- overview of the procedure:
-
- o Boot the Linux installation media;
-
- o Run fdisk under Linux to create Linux partitions;
-
- o Run mke2fs and mkswap to create Linux filesystems and swap space;
-
- o Install the Linux software;
-
- o Finally, either install the LILO boot loader on your hard drive,
- or create a boot floppy in order to boot your new Linux system.
-
- As we have said, one (or more) of these steps may be automated for
- you by the installation procedure, depending on the distribution of
- Linux which you are using. Please consult the documentation for your
- distribution for specific instructions.
-
- 2.3.1 Booting Linux
-
- The first step is to boot the Linux installation media. In most
- cases, this is a ``boot floppy'' which contains a small Linux system.
- Upon booting the floppy, you will be presented with an installation
- menu of some kind which will lead you through the steps of installing
- the software. On other distributions, you will be presented with a
- login prompt when booting this floppy. Here, you usually login as
- root or install to begin the installation process.
- The documentation which came with your particular distribution will
- explain what is necessary to boot Linux from the installation media.
- If you are installing the Slackware distribution of Linux, all that
- is required is to boot the boot floppy which you created in the
- previous section.
- 2.3. Installing the Linux software 57
- _______________________________________________________________________
-
- Most distributions of Linux use a boot floppy which allows you
- to enter hardware parameters at a boot prompt, to force hardware
- detection of various devices. For example, if your SCSI controller
- is not detected when booting the floppy, you will need to reboot and
- specify the hardware parameters (such as I/O address and IRQ) at the
- boot prompt.
- Likewise, IBM PS/1, ThinkPad, and ValuePoint machines do not store
- drive geometry in the CMOS, and you must specify it at boot time.
- The boot prompt is often displayed automatically when booting the
- boot floppy. This is the case for the Slackware distribution. Other
- distributions require you to hold down [shift] or [ctrl] while booting
- the floppy. If successful, you should see the prompt
-
- boot:
-
- and possibly other messages.
- To try booting without any special parameters, just press enter at
- the boot prompt.
- Watch the messages as the system boots. If you have a SCSI
- controller, you should see a listing of the SCSI hosts detected. If
- you see the message
-
- SCSI: 0 hosts
-
- then your SCSI controller was not detected, and you will have to use
- the following procedure.
- Also, the system will display information on the drive partitions
- and devices detected. If any of this information is incorrect or
- missing, you will have to force hardware detection.
- On the other hand, if all goes well and you hardware seems to be
- detected, you can skip to the following section, Section 2.3.2.
- To force hardware detection, you must enter the appropriate
- parameters at the boot prompt, using the following syntax:
-
- ramdisk <parameters...>
-
- There are a number of such parameters available; here are some of
- the most common.
-
- hd=<cylinders>,<heads>,<sectors>
- Specify the harddrive geometry. Required for systems such
- as the IBM PS/1, ValuePoint, and ThinkPad. For example,
- if your drive has 683 cylinders, 16 heads, and 32 sectors
- per track, enter
-
- ramdisk hd=683,16,32
-
-
- tmc8xx=<memaddr>,<irq>
- Specify address and IRQ for BIOS-less Future Domain
- TMC-8xx SCSI controller. For example,
- 2.3. Installing the Linux software 58
- _______________________________________________________________________
-
- ramdisk tmc8xx=0xca000,5
-
-
- Note that the 0x prefix must be used for all values given
- in hexadecimal. This is true for all of the following
- options.
- st0x=<memaddr>,<irq>
- Specify address and IRQ for BIOS-less Seagate ST02
- controller.
-
- t128=<memaddr>,<irq>
- Specify address and IRQ for BIOS-less Trantor T128B
- controller.
-
- ncr5380=<port>,<irq>,<dma> Specify port, IRQ, and DMA
- channel for generic NCR5380 controller.
-
- aha152x=<port>,<irq>,<scsi_id>,1
- Specify port, IRQ, and SCSI ID for BIOS-less AIC-6260
- controllers. This includes Adaptec 1510, 152x, and
- Soundblaster-SCSI controllers.
-
- For each of these, you must enter ramdisk followed by the parameter
- that you wish to use.
- If you have questions about these boot-time options, please read
- the Linux SCSI HOWTO, which should be available on any Linux FTP
- archive site (or from wherever you obtained this book), as well as the
- Linux CD-ROM HOWTO. These documents describe hardware compatibility in
- much more detail.
-
- 2.3.2 Drives and partitions under Linux
-
- Many distributions require you to create Linux partitions by hand
- using the fdisk program. Others may automatically create partitions
- for you. Either way, you should know the following information about
- Linux partitions and device names.
- Drives and partitions under Linux are given different names than
- their counterparts under other operating systems. Under MS-DOS,
- floppy drives are referred to as A: and B:, while hard drive
- partitions are named C:, D:, and so on. Under Linux, the naming
- convention is quite different.
- Device drivers, found in the directory /dev, are used to
- communicate with devices on your system (such as hard drives, mice,
- and so on). For example, if you have a mouse on your system, you
- access it through the driver /dev/mouse. Floppy drives, hard drives,
- and individual partitions are all given individual device drivers of
- their own. Don't worry about the device driver interface for now; it
- is important only to understand how the various devices are named in
- order to use them.
- Table 2.1 lists the names of these various device drivers.
- 2.3. Installing the Linux software 59
- _______________________________________________________________________
-
- Device Name
-
- First floppy (A:) /dev/fd0
- Second floppy (B:) /dev/fd1
- First hard drive (entire drive) /dev/hda
- First hard drive, primary partition 1 /dev/hda1
- First hard drive, primary partition 2 /dev/hda2
- First hard drive, primary partition 3 /dev/hda3
- First hard drive, primary partition 4 /dev/hda4
- First hard drive, logical partition 1 /dev/hda5
- First.hard drive, logical partition 2 /dev/hda6
- ..
-
- Second hard drive (entire drive) /dev/hdb
- Second.hard drive, primary partition 1 /dev/hdb1
- ..
- First SCSI hard drive (entire drive) /dev/sda
- First.SCSI hard drive, primary partition 1 /dev/sda1
-
- ..
- Second SCSI hard drive (entire drive) /dev/sdb
- Second.SCSI hard drive, primary partition 1 /dev/sdb1
- ..
-
- Table 2.1: Linux partition names
-
-
-
- A few notes about this table. Note that /dev/fd0 corresponds to
- the first floppy drive (A: under MS-DOS) and /dev/fd1 corresponds to
- the second floppy (B:).
- Also, SCSI hard drives are named differently than other drives.
- IDE, MFM, and RLL drives are accessed through the devices /dev/hda,
- /dev/hdb, and so on. The individual partitions on the drive /dev/hda
- are /dev/hda1, /dev/hda2, and so on. However, SCSI drives are named
- /dev/sda, /dev/sdb, etc., with partition names such as /dev/sda1 and
- /dev/sda2.
- Here's an example. Let's say that you have a single IDE hard
- drive, with 3 primary partitions. The first two are set aside for
- MS-DOS, and the third is an extended partition which contains two
- logical partitions, both for use by Linux. The devices referring to
- these partitions would be:
- First MS-DOS partition (C:) /dev/hda1
- Second MS-DOS partition (D:) /dev/hda2
- Extended partition /dev/hda3
- First Linux logical partition /dev/hda5
- Second Linux logical partition /dev/hda6
-
- Note that /dev/hda4 is skipped; it corresponds to the fourth
- primary partition, which we don't have in this example. Logical
- 2.3. Installing the Linux software 60
- _______________________________________________________________________
-
- partitions are named consecutively starting with /dev/hda5.
-
- 2.3.3 Creating Linux partitions
-
- Now you are ready to create Linux partitions with the fdisk command.
- As described in Section 2.2.3, in general you will need to create
- at least one partition for the Linux software itself, and another
- partition for swap space.
- After booting the installation media, run fdisk by typing
-
- fdisk <drive>
-
- where <drive> is the Linux device name of the drive you plan to add
- partitions to (see Table 2.1). For instance, if you want to run fdisk
- on the first SCSI disk in your system, use the command fdisk /dev/sda.
- /dev/hda (the first IDE drive) is the default if you don't specify
- one.
- If you are creating Linux partitions on more than one drive, run
- fdisk once for each drive.
-
- # fdisk /dev/hda
-
- Command (m for help):
-
-
- Here fdisk is waiting for a command; you can type m to get a list of
- options.
-
- Command (m for help): m
- Command action
- a toggle a bootable flag
- d delete a partition
- l list known partition types
- m print this menu
- n add a new partition
- p print the partition table
- q quit without saving changes
- t change a partition's system id
- u change display/entry units
- v verify the partition table
- w write table to disk and exit
- x extra functionality (experts only)
-
- Command (m for help):
-
- The n command is used to create a new partition. Most of the other
- options you won't need to worry about. To quit fdisk without saving
- any changes, use the q command. To quit fdisk and write the changes
- to the partition table to disk, use the w command.
- The first thing you should do is display your current partition
- table and write the information down, for later reference. Use the p
- 2.3. Installing the Linux software 61
- _______________________________________________________________________
-
- command.
-
- Command (m for help): p
- Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders
- Units = cylinders of 608 * 512 bytes
-
-
- Device Boot Begin Start End Blocks Id System
- /dev/hda1 * 1 1 203 61693 6 DOS 16-
- bit >=32M
-
-
-
- Command (m for help):
-
- In this example, we have a single MS-DOS partition on /dev/hda1,
- which is 61693 blocks (about 60 megs).(6) This partition starts at
- cylinder number 1, and ends on cylinder 203. We have a total of 683
- cylinders in this disk; so there are 480 cylinders left to create
- Linux partitions on.
- To create a new partition, use the n command. In this example,
- we'll create two primary partitions (/dev/hda2 and /dev/hda3) for
- Linux.
-
- Command (m for help): n
- Command action
- e extended
- p primary partition (1-4)
- p
-
- Here, fdisk is asking the type of the partition to create: extended
- or primary. In our example, we're creating only primary partitions,
- so we choose p.
-
- Partition number (1-4):
-
- fdisk will then ask for the number of the partition to create; since
- partition 1 is already used, our first Linux partition will be number
- 2.
-
- Partition number (1-4): 2
- First cylinder (204-683):
-
- Now enter the starting cylinder number of the partition. Since
- cylinders 204 through 683 are unused, we'll use the first available
- one (numbered 204). There's no reason to leave empty space between
- partitions.
-
- ----------------------------
- 6. A block, under Linux, is 1024 bytes.
- 2.3. Installing the Linux software 62
- _______________________________________________________________________
-
- First cylinder (204-683): 204
- Last cylinder or +size or +sizeM or +sizeK (204-683):
-
- fdisk is asking for the size of the partition to create. We
- can either specify an ending cylinder number, or a size in bytes,
- kilobytes, or megabytes. Since we want our partition to be 80 megs in
- size, we specify +80M. When specifying a partition size in this way,
- fdisk will round the actual partition size to the nearest number of
- cylinders.
-
- Last cylinder or +size or +sizeM or +sizeK (204-683): +80M
-
- Warning: Linux cannot currently use 33090 sectors of this
- partition
-
- If you see a warning message such as this, it can be ignored. fdisk
- prints the warning because it's an older program, and dates before
- the time that Linux partitions were allowed to be larger than 64
- megabytes.
- Now we're ready to create our second Linux partition. For sake of
- demonstration, we'll create it with a size of 10 megabytes.
-
- Command (m for help): n
- Command action
- e extended
- p primary partition (1-4)
- p
- Partition number (1-4): 3
- First cylinder (474-683): 474
- Last cylinder or +size or +sizeM or +sizeK (474-683): +10M
-
- At last, we'll display the partition table. Again, write down
- all of this information---especially the block sizes of your new
- partitions. You'll need to know the sizes of the partitions
- when creating filesystems, later. Also, verify that none of your
- partitions overlap.
-
- Command (m for help): p
-
- Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders
- Units = cylinders of 608 * 512 bytes
-
-
- Device Boot Begin Start End Blocks Id System
- /dev/hda1 * 1 1 203 61693 6 DOS 16-
- bit >=32M
- /dev/hda2 204 204 473 82080 81 Linux/MINIX
- /dev/hda3 474 474 507 10336 81 Linux/MINIX
- 2.3. Installing the Linux software 63
- _______________________________________________________________________
-
- As you can see, /dev/hda2 is now a partition of size 82080 blocks
- (which corresponds to about 80 megabytes), and /dev/hda3 is 10336
- blocks (about 10 megs).
- Note that many distributions (such as Slackware) require you to use
- the t command in fdisk to change the type of the swap partition to
- ``Linux swap'', which is usually numbered 82. You can use the L
- command to print a list of known partition type codes, and then use
- t to set the type of the swap partition to that which corresponds to
- ``Linux swap''.
- In this way, the installation software will be able to
- automatically find your swap partitions based on type. If the
- installation software doesn't seem to recognize your swap partition,
- you might want to re-run fdisk and use the t command on the partition
- in question.
- In the example above, the remaining cylinders on the disk (numbered
- 508 to 683) are unused. You may wish to leave unused space on the
- disk, in case you wish to create additional partitions later.
- Finally, we use the w command to write the changes to disk and exit
- fdisk.
-
- Command (m for help): w
-
- #
-
- Keep in mind that none of the changes you make while running fdisk
- will take effect until you give the w command, so you can toy with
- different configurations and save them when you're done. Also, if you
- want to quit fdisk at any time without saving the changes, use the q
- command. Remember that you shouldn't modify partitions for operating
- systems other than Linux with the Linux fdisk program.
- Remember that you may not be able to boot Linux from a partition
- using cylinders numbered over 1023. Therefore, you should try to
- create your Linux root partition within the sub-1024 cylinder range.
- Again, if this is impossible, you can simply boot Linux from floppy.
- Some Linux distributions require you to reboot the system after
- running fdisk. This is to allow the changes to the partition table
- to take effect before installing the software. Newer versions of
- fdisk automatically update the partition information in the kernel, so
- rebooting isn't necessary. To be on the safe side, after running
- fdisk you should reboot the installation media, as before, before
- proceeding.
-
- 2.3.4 Creating the swap space
-
- If you are planning to use a swap partition for virtual RAM, you're
- ready to prepare it for use.(7) In Chapter 4 we will discuss the
-
- ----------------------------
- 7. Again, some distributions of Linux will prepare the swap space
- automatically for you, or via an installation menu option.
- 2.3. Installing the Linux software 64
- _______________________________________________________________________
-
- preparation of a swap file in case you don't want to use an individual
- partition.
- Many distributions require you to create and activate swap space
- before installing the software. If you have a small amount of
- physical RAM, the installation procedure may not be successful unless
- you have some amount of swap space enabled.
- The Slackware distribution requires you to create swap space,
- before installation, if you have 4 megabytes of RAM or less. If this
- is not the case, the Slackware installation procedure can be used to
- prepare swap space automatically. If in doubt, go ahead and follow
- the procedure described here; it can't hurt.
- The command used to prepare a swap partition is mkswap, and it
- takes the form
-
- mkswap -c <partition> <size>
-
- where <partition> is the name of the swap partition, and <size> is the
- size of the partition, in blocks.(8) For example, if your swap
- partition is /dev/hda3 and is 10336 blocks in size, use the command
-
- # mkswap --c /dev/hda3 10336
-
- The -c option tells mkswap to check for bad blocks on the partition
- when creating the swap space.
- If you are using multiple swap partitions, you will need to execute
- the appropriate mkswap command for each partition.
- After formatting the swap space, you need to enable it for use by
- the system. Usually, the system automatically enables swap space at
- boot time. However, because you have not yet installed the Linux
- software, you need to enable it by hand.
- The command to enable swap space is swapon, and it takes the form
-
- swapon <partition>
-
- In the example above, to enable the swap space on /dev/hda3, we use
- the command
-
- # swapon /dev/hda3
-
-
- 2.3.5 Creating the filesystems
-
- Before you can use your Linux partitions to store files, you must
- create filesystems on them. Creating a filesystem is analogous to
- formatting a partition under MS-DOS or other operating systems. We
- discussed filesystems briefly in Section 2.2.3.
-
- ----------------------------
- 8. This is the size as reported by fdisk, using the p menu option. A
- block under Linux is 1024 bytes.
- 2.3. Installing the Linux software 65
- _______________________________________________________________________
-
- There are several types of filesystems available for Linux. Each
- filesystem type has its own format and set of characteristics (such
- as filename length, maximum file size, and so on). Linux also
- supports several ``third-party'' filesystem types such as the MS-DOS
- filesystem.
- The most commonly used filesystem type is the Second Extended
- Filesystem, or ext2fs. The ext2fs is one of the most efficient and
- flexible filesystems; it allows filenames up to 256 characters and
- filesystem sizes of up to 4 terabytes. In Chapter 4, we'll discuss
- the various filesystem types available for Linux. Initially, however,
- we suggest that you use the ext2fs filesystem.
- If you are installing the Slackware distribution, filesystems are
- created automatically for you by the installation procedure described
- in the next section. If you wish to create your filesystems by hand,
- however, follow the procedure described here.
- To create an ext2fs filesystem, use the command
-
- mke2fs -c <partition> <size>
-
- where <partition> is the name of the partition, and <size> is the size
- of the partition in blocks. For example, to create a 82080-block
- filesystem on /dev/hda2, use the command
-
- # mke2fs --c /dev/hda2 82080
-
- If you're using multiple filesystems for Linux, you'll need to use
- the appropriate mke2fs command for each filesystem.
- If you have encountered any problems at this point, see Section 2.5
- at the end of this chapter.
-
- 2.3.6 Installing the software
-
- Finally, you are ready to install the software on your system.
- Every distribution has a different mechanism for doing this. Many
- distributions have a self-contained program which will step you
- through the installation. On other distributions, you will have to
- mount your filesystems in a certain subdirectory (such as /mnt) and
- copy the software to them by hand. On CD-ROM distributions, you may
- be given the option to install a portion of the software on your hard
- drives, and leave most of the software on the CD-ROM.
- Some distributions offer several different ways to install the
- software. For example, you may be able to install the software
- directly from an MS-DOS partition on your hard drive, instead of from
- floppies. Or, you may be able to install over a TCP/IP network via
- FTP or NFS. See your distribution's documentation for details.
- For example, the Slackware distribution only requires you to create
- partitions with fdisk, optionally create swap space with mkswap and
- swapon (if you have 4 megs or less of RAM), and then run the setup
- program. setup leads you through a very self-explanatory menu system
- to install the software. Use of setup is described in detail below.
- 2.3. Installing the Linux software 66
- _______________________________________________________________________
-
- The exact method used to install the Linux software differs greatly
- with each distribution. We're hoping that installing the Linux
- software should be self-explanatory, as it is with most distributions.
-
- 2.3.6.1 Installing Slackware with setup
-
- If you are installing Slackware, after creating partitions (and
- possibly swap space), use the command
-
- # setup
-
- This will present you will a menu-based procedure to walk you through
- the remaining steps of installation.
- The procedure described here corresponds to that found on the
- color144 and colrlite root disks; the other root disks may have
- slightly different procedures.
- The setup menu consists of the following items. Use the arrow keys
- to move over the items, and press [enter] or [spacebar] to select an
- item.
-
- Help View the setup help file.
-
- Keymap This option allows you to specify the keyboard mapping for
- your system if you do not have a US keyboard. A list
- of keymaps will be presented; select the appropriate item
- from the list.
- Quick This allows you to select between ``quick'' and
- ``verbose'' installation modes. ``Verbose'' is the
- default, and is recommended for most installations (unless
- you've installed Slackware a dozen times, in which case
- you already know this).
-
- Make tags This allows Slackware installation experts to create
- customized ``tag files'' for preselecting packages. This
- is only necessary for customizing the installation
- procedure in some way; you shouldn't have to concern
- yourself with this.
-
- Addswap This will be the first item that most users will select to
- install Slackware. A list of available swap partitions
- will be displayed (those partitions with type ``Linux
- swap'' as set in fdisk). You will be able to specify
- which partitions you wish to use for swap space. You
- will then be asked if you wish to run mkswap on these
- partitions.
-
- If you have already executed mkswap and swapon (as
- described in Section 2.3.4) on your swap partitions, then
- you should not allow setup to execute mkswap on these
- partitions.
- 2.3. Installing the Linux software 67
- _______________________________________________________________________
-
- Even if you have already executed mkswap and swapon, it is
- necessary to use the Addswap menu item: This ensures that
- your swap partitions will be available once you have the
- system installed.
-
- ! Be warned! Creating swap space on a partition will
- destroy data on that partition. Be sure that you're not
- wiping out data that you want to keep.
- If you select this menu item, you will be automatically
- prompted if you wish to proceed with the following items.
- In general, you should do this.
-
- Target This item allows you to specify the partitions upon which
- Linux is to be installed. A list of available partitions
- (those with type ``Linux native'', as specified by fdisk)
- will be displayed, and you will be asked to enter the name
- of your Linux root partition, such as /dev/hda2. You
- will then be prompted for the type of filesystem that you
- wish to create; we suggest using the ext2fs filesystem
- type as described in Section 2.3.5. This will create a
- filesystem on the named partition---somewhat analogous to
- ``formatting'' the partition under MS-DOS.
- You will also be prompted for any other partitions that
- you might wish to use for Linux. For example, if you
- created a separate partition for /usr (see Section 2.2.3),
- you will be able to specify the name of the partition and
- the location where it should be mounted (as in /usr or
- /usr/bin).
-
- ! Be warned! Creating a filesystem on a partition will
- destroy all data on that partition. Be sure that you're
- not wiping out data that you want to keep.
- Even if you already created your filesystems using mke2fs
- (see Section 2.3.5), you must use the Target menu item to
- specify the partitions where Linux will be installed.
-
- Source This menu item allows you to specify where you will be
- installing Slackware from, such as floppy, hard drive, or
- CD-ROM.
- If you are installing from hard drive, you will be asked
- what partition the Slackware files are found on, as well
- as the type of partition. For example, if you have the
- Slackware files on an MS-DOS partition, enter the name of
- the partition (such as /dev/hda1) and select MS-DOS FAT
- as the type. You will then be asked what directory the
- files may be found under on this partition. For example,
- if you have the Slackware files stored under the directory
- C:\SLACK on your MS-DOS partition, enter
- 2.3. Installing the Linux software 68
- _______________________________________________________________________
-
- /slack
-
-
- as the location. Note that you should use forward
- slashes, not backslashes, in the pathname.
- If you are installing from CD-ROM, you will be asked the
- type of CD-ROM device that you are using, as well as
- what directory on the CD-ROM the files may be found in.
- Many CD-ROMs have the files contained within the directory
- /slakware, but this depends on the release.
- If you are installing Slackware Professional,(9) two
- directories are used on the CD-ROM. slakware is used for
- the standard system which will install the files directly
- to your hard drive. slackpro is used for the CD-ROM-based
- system where many files are accessed directly from the
- CD-ROM. This can save diskspace, but accessing many files
- is also noticeably slower. Several other Slackware
- vendors provide the ability to run the software from the
- CD-ROM as well. However, if you have the diskspace to
- spare, we recommend not running Slackware from the CD-ROM
- itself. Performance is generally slower.
-
- If you are attempting a hard drive or CD-ROM install,
- Slackware may report that there is a mount error at
- this point. This is usually an indication that there
- was a problem accessing the hard drive or CD-ROM. See
- Section 2.5.3 for more information if you see such an
- error message.
-
- Disk sets This menu option allows you to select the disk sets that
- you wish to install. You must install at least the A disk
- set. Simply use the arrow keys and spacebar to select
- which disk sets you wish to install.
- Note that selecting a particular disk set does not mean
- that all packages on the disk set will be installed; you
- will be prompted before installing packages on the disk
- set marked as ``optional'' or ``recommended.''
-
- Install At long last, this menu item will install the software
- on your system. You will be prompted for the prompting
- method; most users should select ``normal.'' For each
- disk set that you selected, the ``required'' packages will
- be installed, and you will be prompted when installing the
- ``optional'' and ``recommended'' packages. If you are
- installing from floppy you will be asked to insert each
- floppy in succession.
-
- ----------------------------
- 9. Slackware Professional is a version of Slackware available from
- Morse Telecommunications.
- 2.3. Installing the Linux software 69
- _______________________________________________________________________
-
- As each package is installed a short description will be
- printed. Unless you have background in UNIX or Linux,
- many of these descriptions will not mean much to you.
- Take note of which packages are being installed, so you
- know what's there, but don't worry about trying to jot
- down everything that's printed on the display.
-
- The most common error encountered here is that a file
- cannot be found on a floppy, or an I/O error when
- attempting to read the floppy. The former is an
- indication that the files on your floppy might be
- corrupted or incomplete; the latter that the floppy
- itself is bad. Any floppies which give these errors
- should be replaced, and you should re-install the disk
- set containing those floppies. See Section 2.5.3 for
- suggestions.
- You may also have read errors when attempting to access
- a CD-ROM; be sure that the CD-ROM is clean, has no
- fingerprints, etc.
-
- Configure This menu item performs some post-installation configura-
- tion of your system. This is covered in the following
- section.
-
-
- 2.3.7 Creating the boot floppy or installing LILO
-
- Every distribution provides some means of booting your new Linux
- system after you have installed the software. In many cases, the
- installation procedure will create a ``boot floppy'' which contains a
- Linux kernel configured to use your newly-created root filesystem. In
- order to boot Linux, you would boot from this floppy, and control
- would be transferred to your hard drive after booting. On other
- distributions, this ``boot floppy'' is the installation floppy itself.
- Many distributions give you the option of installing LILO on your
- hard drive. LILO is a program that is installed on your drive's
- master boot record. It is able to boot a number of operating systems,
- including MS-DOS and Linux, and allows you to select at startup time
- which to boot.
- For the Slackware distribution, the Configure item in the setup
- menu will allow you to create a boot floppy as well as install LILO.
- These options should be fairly self-explanatory. The Configure menu
- item also allows you to specify your modem, mouse, and timezone
- information.
- In order for LILO to be installed successfully, it needs to
- know a good deal of information about your drive configuration---for
- example, which partitions contain which operating systems, how to
- boot each operating system, and so on. Many distributions, when
- installing LILO, attempt to ``guess'' at the appropriate parameters
- for your configuration. Although it's not often, the automated LILO
- installation provided by some distributions can fail, and leave your
- 2.4. Postinstallation procedures 70
- _______________________________________________________________________
-
- master boot record in shambles (although it's very doubtful that any
- damage to the actual data on your hard drive will take place). In
- particular, if you use OS/2's Boot Manager, you should not install
- LILO using the automated procedure---there are special instructions
- for using LILO with the Boot Manager, which will be covered later.
- In many cases, it is best to use a boot floppy, until you have
- a chance to configure LILO yourself, by hand. If you're feeling
- exceptionally trustworthy, though, you can go ahead with the automated
- LILO installation if it is provided with your distribution.
- In Chapter 4, we'll cover in detail how to configure and install
- LILO for your particular setup.
- If everything goes well, then congratulations! You have just
- installed Linux on your system. Go have a Diet Coke or
- something---you deserve it.
- In case you did run into any trouble, the next section will
- describe the most common sticking points for Linux installations, and
- how to get around them.
-
- 2.3.8 Additional installation procedures
-
- Some distributions of Linux provide a number of additional
- installation procedures, allowing you to configure various software
- packages such as TCP/IP networking, the X Window System, and so
- on. If you are provided with these configuration options during
- installation, you may wish to read ahead in this book for more
- information on how to configure this software. Otherwise, you should
- put off these installation procedures until you have a complete
- understanding of how to configure the software.
- It's up to you; if all else fails, just go with the flow and
- see what happens. It's very doubtful that anything that you do
- incorrectly now cannot be undone in the future. (Knock on wood.)
-
-
- 2.4 Postinstallation procedures
-
- After you have completed installing the Linux software, there should
- be very little left to do before you can begin to use the system. In
- most cases, you should be able to reboot the system, login as root,
- and begin exploring the system. (Each distribution has a slightly
- different method for doing this.)
- At this point it's a good idea to explain how to reboot and
- shutdown the system as you're using it. You should never reboot
- or shutdown your Linux system by pressing the reset switch or with
- the old ``Vulcan Nerve Pinch''---that is, by pressing [ctrl-alt-del]
- in unison.(10) You shouldn't simply switch off the power, either.
-
- ----------------------------
- 10. On most Linux systems, however, [ctrl-alt-del] will cause the
- system to shutdown gracefully, as if you had used the shutdown
- command.
- 2.5. Running Into Trouble 71
- _______________________________________________________________________
-
- As with most UNIX systems, Linux caches disk writes in memory.
- Therefore, if you suddenly reboot the system without shutting down
- ``cleanly'', you can corrupt the data on your drives, causing untold
- damage.
- The easiest way to shut down the system is with the shutdown
- command. As an example, to shutdown and reboot the system
- immediately, use the following command as root:
-
- # shutdown --r now
-
- This will cleanly reboot your system. The man page for shutdown
- describes the other command-line arguments that are available.(11)
- Note, however, that many Linux distributions do not provide the
- shutdown command on the installation media. This means that the first
- time you reboot your system after installation, you may need to use
- the [ctrl-alt-del] combination after all. Thereafter, you should
- always use the shutdown command.
- After you have a chance to explore and use the system, there are
- several configuration chores that you should undertake. The first is
- to create a user account for yourself (and, optionally, for any other
- users that might have access to the system). Creating user accounts
- is described in Section 4.4. Usually, all that you have to do is
- login as root, and run the adduser (sometimes useradd) program. This
- will lead you through several prompts to create a new user account.
- If you created more than one filesystem for Linux, or if you're
- using a swap partition, you may need to edit the file /etc/fstab
- in order for those filesystems to be available automatically after
- rebooting. (For example, if you're using a separate filesystem for
- /usr, and none of the files that should be in /usr appear to be
- present, you may simply need to mount that filesystem.) Section 4.8
- describes this procedure. Note that the Slackware distribution of
- Linux automatically configures your filesystems and swap space at
- installation time, so this usually isn't necessary.
-
-
- 2.5 Running Into Trouble
-
- Almost everyone runs into some kind of snag or hangup when attempting
- to install Linux the first time. Most of the time, the problem is
- caused by a simple misunderstanding. Sometimes, however, it can be
- something more serious, such as an oversight by one of the developers,
- or a bug.
- This section will describe some of the most common installation
- problems, and how to solve them. If your installation appears to
- be successful, but you received unexpected error messages during the
- installation, these are described here as well.
- ----------------------------
- 11. Use the command man shutdown to see the manual page for shutdown.
- 2.5. Running Into Trouble 72
- _______________________________________________________________________
-
- 2.5.1 Problems with booting the installation media
-
- When attempting to boot the installation media for the first time,
- you may encounter a number of problems. These are listed below.
- Note that the following problems are not related to booting your
- newly-installed Linux system. See Section 2.5.4 for information on
- these kinds of pitfalls.
-
- o Floppy or media error when attempting to boot.
-
- The most popular cause for this kind of problem is a corrupt boot
- floppy. Either the floppy is physically damaged, in which case
- you should re-create the disk with a brand new floppy, or the data
- on the floppy is bad, in which case you should verify that you
- downloaded and transferred the data to the floppy correctly. In
- many cases, simply re-creating the boot floppy will solve your
- problems. Retrace your steps and try again.
-
- If you received your boot floppy from a mail order vendor
- or some other distributor, instead of downloading and creating
- it yourself, contact the distributor and ask for a new boot
- floppy---but only after verifying that this is indeed the problem.
-
- o System ``hangs'' during boot or after booting.
-
- After the installation media boots, you will see a number of
- messages from the kernel itself, indicating which devices were
- detected and configured. After this, you will usually be
- presented with a login prompt, allowing you to proceed with
- installation (some distributions instead drop you right into an
- installation program of some kind). The system may appear to
- ``hang'' during several of these steps. During all of these
- steps, be patient; loading software from floppy is very slow. In
- many cases, the system has not hung at all, but is merely taking a
- long time. Verify that there is no drive or system activity for
- at least several minutes before assuming that the system is hung.
-
-
- 1. After booting from the LILO prompt, the system must load the
- kernel image from floppy. This may take several seconds; you
- will know that things are going well if the floppy drive light
- is still on.
-
- 2. While the kernel boots, SCSI devices must be probed for. If
- you do not have any SCSI devices installed, the system will
- ``hang'' for up to 15 seconds while the SCSI probe continues;
- this usually occurs after the line
-
-
- lp_init: lp1 exists (0), using polling driver
- 2.5. Running Into Trouble 73
- _______________________________________________________________________
-
- appears on your screen.
-
- 3. After the kernel is finished booting, control is transferred
- to the system bootup files on the floppy. Finally, you
- will be presented with a login prompt, or be dropped into
- an installation program. If you are presented with a login
- prompt such as
-
-
- Linux login:
-
-
- you should then login (usually as root or install---this
- varies with each distribution). After entering the username,
- the system may pause for 20 seconds or more while the
- installation program or shell is being loaded from floppy.
- Again, the floppy drive light should be on. Don't assume that
- the system is hung.
-
-
- Any of the above items may be the source of your problem.
- However, it is possible that the system actually may ``hang''
- while booting, which can be due to several causes. First of all,
- you may not have enough available RAM to boot the installation
- media. (See the following item for information on disabling the
- ramdisk to free up memory.)
-
- The cause of many system hangs is hardware incompatibility.
- Section 1.8 in the last chapter presented an overview of supported
- hardware under Linux. Even if your hardware is supported, you may
- run into problems with incompatible hardware configurations which
- are causing the system to hang. See Section 2.5.2, below, for a
- discussion of hardware incompatibilities.
-
- o System reports out of memory errors while attempting to boot or
- install the software.
-
- This item deals with the amount of RAM that you have available.
- On systems with 4 megabytes of RAM or less, you may run into
- trouble booting the installation media or installing the software
- itself. This is because many distributions use a ``ramdisk'',
- which is a filesystem loaded directly into RAM, for operations
- while using the installation media. The entire image of the
- installation boot floppy, for example, may be loaded into a
- ramdisk, which may require more than a megabyte of RAM.
-
- The solution to this problem is to disable the ramdisk option
- when booting the install media. Each release has a different
- procedure for doing this; on the SLS release, for example, you
- type ``floppy'' at the LILO prompt when booting the a1 disk. See
- 2.5. Running Into Trouble 74
- _______________________________________________________________________
-
- your distribution's documentation for details.
-
- You may not see an ``out of memory'' error when attempting to
- boot or install the software; instead, the system may unexpectedly
- hang, or fail to boot. If your system hangs, and none of the
- explanations in the previous section seem to be the cause, try
- disabling the ramdisk.
-
- Keep in mind that Linux itself requires at least 2 megabytes of
- RAM to run at all; some distributions of Linux require 4 megabytes
- or more.
-
- o The system reports an error such as ``permission denied'' or
- ``file not found'' while booting.
-
- This is an indication that your installation bootup media is
- corrupt. If you attempt to boot from the installation media (and
- you're sure that you're doing everything correctly), you should
- not see any errors such as this. Contact the distributor of your
- Linux software and find out about the problem, and perhaps obtain
- another copy of the boot media if necessary. If you downloaded
- the bootup disk yourself, try re-creating the bootup disk, and see
- if this solves your problem.
-
- o The system reports the error ``VFS: Unable to mount root'' when
- booting.
-
- This error message means that the root filesystem (found on the
- boot media itself), could not be found. This means that either
- your boot media is corrupt in some way, or that you are not
- booting the system correctly.
-
- For example, many CD-ROM distributions require that you have the
- CD-ROM in the drive when booting. Also be sure that the CD-ROM
- drive is on, and check for any activity. It's also possible that
- the system is not locating your CD-ROM drive at boot time; see
- Section 2.5.2 for more information.
-
- If you're sure that you are booting the system correctly, then
- your bootup media may indeed be corrupt. This is a very uncommon
- problem, so try other solutions before attempting to use another
- boot floppy or tape.
-
-
- 2.5.2 Hardware problems
-
- The most common form of problem when attempting to install or
- use Linux is an incompatibility with hardware. Even if all of
- your hardware is supported by Linux, a misconfiguration or hardware
- conflict can sometimes cause strange results---your devices may not be
- 2.5. Running Into Trouble 75
- _______________________________________________________________________
-
- detected at boot time, or the system may hang.
- It is important to isolate these hardware problems if you suspect
- that they may be the source of your trouble. In the following
- sections we will describe some common hardware problems and how to
- resolve them.
-
- 2.5.2.1 Isolating hardware problems
-
- If you experience a problem that you believe to be hardware-related,
- the first thing that you should to do is attempt to isolate the
- problem. This means eliminating all possible variables and (usually)
- taking the system apart, piece-by-piece, until the offending piece of
- hardware is isolated.
- This is not as frightening as it may sound. Basically, you should
- remove all nonessential hardware from your system, and then determine
- which device is actually causing the trouble---possibly by reinserting
- each device, one at a time. This means that you should remove all
- hardware other than the floppy and video controllers, and of course
- the keyboard. Even innocent-looking devices such as mouse controllers
- can wreak unknown havoc on your peace of mind unless you consider them
- nonessential.
- For example, let's say that the system hangs during the Ethernet
- board detection sequence at boot time. You might hypothesize that
- there is a conflict or problem with the Ethernet board in your
- machine. The quick and easy way to find out is to pull the Ethernet
- board, and try booting again. If everything goes well, then you
- know that either (a) the Ethernet board is not supported by Linux
- (see Section 1.8 for a list of compatible boards), or (b) there is an
- address or IRQ conflict with the board.
- ``Address or IRQ conflict?'' What on earth does that mean? All
- devices in your machine use an IRQ, or interrupt request line, to tell
- the system that they need something done on their behalf. You can
- think of the IRQ as a cord that the device tugs when it needs the
- system to take care of some pending request. If more than one device
- is tugging on the same cord, the kernel won't be able to detemine
- which device it needs to service. Instant mayhem.
- Therefore, be sure that all of your installed devices are using
- unique IRQ lines. In general the IRQ for a device can be set by
- jumpers on the card; see the documentation for the particular device
- for details. Some devices do not require the use of an IRQ at all,
- but it is suggested that you configure them to use one if possible
- (the Seagate ST01 and ST02 SCSI controllers being good examples).
- In some cases, the kernel provided on your installation media is
- configured to use a certain IRQ for certain devices. For example,
- on some distributions of Linux, the kernel is preconfigured to use
- IRQ 5 for the TMC-950 SCSI controller, the Mitsumi CD-ROM controller,
- and the bus mouse driver. If you want to use two or more of these
- devices, you'll need to first install Linux with only one of these
- devices enabled, then recompile the kernel in order to change the
- default IRQ for one of them. (See Chapter 4 for information on
- 2.5. Running Into Trouble 76
- _______________________________________________________________________
-
- recompiling the kernel.)
- Another area where hardware conflicts can arise is with DMA (direct
- memory access) channels, I/O addresses, and shared memory addresses.
- All of these terms describe mechanisms through which the system
- interfaces with hardware devices. Some Ethernet boards, for example,
- use a shared memory address as well as an IRQ to interface with the
- system. If any of these are in conflict with other devices, then the
- system may behave unexpectedly. You should be able to change the
- DMA channel, I/O or shared memory addresses for your various devices
- with jumper settings. (Unfortunately, some devices don't allow you to
- change these settings.)
- The documentation for your various hardware devices should specify
- the IRQ, DMA channel, I/O address, or shared memory address that the
- devices use, and how to configure them. Again, the simple way to get
- around these problems is just to temporarily disable the conflicting
- devices until you have time to determine the cause of the problem.
- Table 2.2 is a list of IRQ and DMA channels used by various
- ``standard'' devices found on most systems. Almost all systems will
- have some of these devices, so you should avoid setting the IRQ or DMA
- of other devices in conflict with these values.
-
- Device I/Oaddress IRQ DMA
-
- ttyS0 (COM1) 3f8 4 n/a
- ttyS1 (COM2) 2f8 3 n/a
- ttyS2 (COM3) 3e8 4 n/a
- ttyS3 (COM4) 2e8 3 n/a
- lp0 (LPT1) 378 - 37f 7 n/a
- lp1 (LPT2) 278 - 27f 5 n/a
- fd0, fd1 (floppies 1 and 2) 3f0 - 3f7 6 2
- fd2, fd3 (floppies 3 and 4) 370 - 377 10 3
-
- Table 2.2: Common device settings
-
-
-
- 2.5.2.2 Problems recognizing hard drive or controller
-
- When Linux boots, you should see a series of messages on your screen
- such as:
-
- Console: colour EGA+ 80x25, 8 virtual consoles
- Serial driver version 3.96 with no serial options enabled
- tty00 at 0x03f8 (irq = 4) is a 16450
- tty03 at 0x02e8 (irq = 3) is a 16550A
- lp_init: lp1 exists (0), using polling driver
- ...
-
- Here, the kernel is detecting the various hardware devices present on
- your system. At some point, you should see the line
- 2.5. Running Into Trouble 77
- _______________________________________________________________________
-
- Partition check:
-
- followed by a list of recognized partitions, for example:
-
- Partition check:
- hda: hda1 hda2
- hdb: hdb1 hdb2 hdb3
-
- If, for some reason, your drives or partitions are not recognized,
- then you will not be able to access them in any way.
- There are several things that can cause this to happen:
-
- o Hard drive or controller not supported. If you are using a hard
- drive controller (IDE, SCSI, or otherwise) that is not supported
- by Linux, the kernel will not recognize your partitions at boot
- time.
-
- o Drive or controller improperly configured. Even if your
- controller is supported by Linux, it may not be configured
- correctly. (This is particularly a problem for SCSI controllers;
- most non-SCSI controllers should work fine without any additional
- configuration).
-
- Refer to the documentation for your hard drive and/or controller
- for information on solving these kinds of problems. In
- particular, many hard drives will need to have a jumper set if
- they are to be used as a ``slave'' drive (for example, as the
- second hard drive). The acid test for this kind of condition is
- to boot up MS-DOS, or some other operating system, known to work
- with your drive and controller. If you can access the drive and
- controller from another operating system, then it is not a problem
- with your hardware configuration.
-
- See Section 2.5.2.1, above, for information on resolving possible
- device conflicts, and Section 2.5.2.3, below, for information on
- configuring SCSI devices.
-
- o Controller properly configured, but not detected. Some BIOS-less
- SCSI controllers require the user to specify information about the
- controller at boot time. Section 2.5.2.3, below, describes how to
- force hardware detection for these controllers.
-
- o Hard drive geometry not recognized. Some systems, such as the IBM
- PS/ValuePoint, do not store hard drive geometry information in the
- CMOS memory, where Linux expects to find it. Also, certain SCSI
- controllers need to be told where to find drive geometry in order
- for Linux to recognize the layout of your drive.
-
- Most distributions provide a bootup option to specify the drive
- geometry. In general, when booting the installation media, you
- 2.5. Running Into Trouble 78
- _______________________________________________________________________
-
- can specify the drive geometry at the LILO boot prompt with a
- command such as:
-
-
- boot: linux hd=<cylinders>,<heads>,<sectors>
-
-
- where <cylinders>, <heads>, and <sectors> correspond to the number
- of cylinders, heads, and sectors per track for your hard drive.
-
- After installing the Linux software, you will be able to install
- LILO, allowing you to boot from the hard drive. At that time, you
- can specify the drive geometry to the LILO installation procedure,
- making it unnecessary to enter the drive geometry each time you
- boot. See Chapter 4 for more about LILO.
-
-
- 2.5.2.3 Problems with SCSI controllers and devices
-
- Presented here are some of the most common problems with SCSI
- controllers and devices such as CD-ROMs, hard drives, and tape drives.
- If you are having problems getting Linux to recognize your drive or
- controller, read on.
- The Linux SCSI HOWTO (see Appendix A) contains much useful
- information on SCSI devices in addition to that listed here. SCSI can
- be particularly tricky to configure at times.
-
- o A SCSI device is detected at all possible ID's. This is caused
- by strapping the device to the same address as the controller.
- You need to change the jumper settings so that the drive uses a
- different address from the controller itself.
-
- o Linux reports sense errors, even if the devices are known to
- be error-free. This can be caused by bad cables, or by bad
- termination. If your SCSI bus is not terminated at both ends, you
- may have errors accessing SCSI devices. When in doubt, always
- check your cables.
-
- o SCSI devices report timeout errors. This is usually caused by a
- conflict with IRQ, DMA, or device addresses. Also check that
- interrupts are enabled correctly on your controller.
-
- o SCSI controllers using BIOS are not detected. Detection of
- controllers using BIOS will fail if the BIOS is disabled, or if
- your controller's ``signature'' is not recognized by the kernel.
- See the Linux SCSI HOWTO for more information about this.
-
- o Controllers using memory mapped I/O do not work. This is
- caused when the memory-mapped I/O ports are incorrectly cached.
- Either mark the board's address space as uncacheable in the XCMOS
- 2.5. Running Into Trouble 79
- _______________________________________________________________________
-
- settings, or disable cache altogether.
-
- o When partitioning, you get a warning that ``cylinders > 1024'', or
- you are unable to boot from a partition using cylinders numbered
- above 1023. BIOS limits the number of cylinders to 1024, and any
- partition using cylinders numbered above this won't be accessible
- from the BIOS. As far as Linux is concerned, this affects only
- booting; once the system has booted you should be able to access
- the partition. Your options are to either boot Linux from a
- boot floppy, or boot from a partition using cylinders numbered
- below 1024. See Section 2.3.7 for information on creating a boot
- diskette or installing LILO.
-
- o CD-ROM drive or other removeable media devices are not recognized
- at boot time. Try booting with a CD-ROM (or disk) in the drive.
- This is necessary for some devices.
-
- If your SCSI controller is not recognized, you may need to force
- hardware detection at boot time. This is particularly important
- for BIOS-less SCSI controllers. Most distributions allow you to
- specify the controller IRQ and shared memory address when booting
- the installation media. For example, if you are using a TMC-8xx
- controller, you may be able to enter
-
- boot: linux tmx8xx=<interrupt>,<memory-address>
-
- at the LILO boot prompt, where <interrupt> is the IRQ of controller,
- and <memory-address> is the shared memory address. Whether or not you
- will be able to do this depends on the distribution of Linux you are
- using; consult your documentation for details.
-
- 2.5.3 Problems installing the software
-
- Actually installing the Linux software should be quite trouble-free,
- if you're lucky. The only problems that you might experience would be
- related to corrupt installation media or lack of space on your Linux
- filesystems. Here is a list of these common problems.
-
-
- o System reports ``Read error'', ``file not found'', or other errors
- while attempting to install the software. This is indicative of a
- problem with your installation media. If you are installing from
- floppy, keep in mind that floppies are quite succeptible to media
- errors of this type. Be sure to use brand-new, newly-formatted
- floppies. If you have an MS-DOS partition on your drive, many
- Linux distributions allow you to install the software from the
- hard drive. This may be faster and more reliable than using
- floppies.
-
- If you are using a CD-ROM, be sure to check the disc for
- scratches, dust, or other problems which might cause media errors.
- 2.5. Running Into Trouble 80
- _______________________________________________________________________
-
- The cause of the problem may be that the media is in the incorrect
- format. For example, if using floppies, many Linux distributions
- require that the floppies be formatted in high-density MS-DOS
- format. (The boot floppy is the exception; it is not in MS-DOS
- format in most cases.) If all else fails, either obtain a new set
- of floppies, or recreate the floppies (using new diskettes) if you
- downloaded the software yourself.
-
- o System reports errors such as ``tar: read error'' or ``gzip: not
- in gzip format''. This problem is usually caused by corrupt
- files on the installation media itself. In other words, your
- floppy may be error-free, but the data on the floppy is in some
- way corrupted. For example, if you downloaded the Linux software
- using text mode, rather than binary mode, then your files will be
- corrupt, and unreadable by the installation software.
-
- o System reports errors such as ``device full'' while installing.
- This is a clear-cut sign that you have run out of space when
- installing the software. Not all Linux distributions will be able
- to cleanly pick up the mess; you shouldn't be able to abort the
- installation and expect the system to work.
-
- The solution is usually to re-create your filesystems (with
- the mke2fs command) which will delete the partially-installed
- software. You can then attempt to re-install the software, this
- time selecting a smaller amount of software to install. In other
- cases, you may need to start completely from scratch, and rethink
- your partition and filesystem sizes.
-
- o System reports errors such as ``read_intr: 0x10'' while accessing
- the hard drive. This is usually an indication of bad blocks on
- your drive. However, if you receive these errors while using
- mkswap or mke2fs, the system may be having trouble accessing your
- drive. This can either be a hardware problem (see Section 2.5.2),
- or it might be a case of poorly specified geometry. If you used
- the
-
-
- hd=<cylinders>,<heads>,<sectors>
-
-
- option at boot time to force detection of your drive geometry,
- and incorrectly specified the geometry, you could be prone to
- this problem. This can also happen if your drive geometry is
- incorrectly specified in the system CMOS.
-
- o System reports errors such as ``file not found'' or ``permission
- denied''. This problem can occur if not all of the necessary
- files are present on the installation media (see the next
- paragraph) or if there is a permissions problem with the
- 2.5. Running Into Trouble 81
- _______________________________________________________________________
-
- installation software. For example, some distributions of Linux
- have been known to have bugs in the installation software itself.
- These are usually fixed very rapidly, and are quite infrequent.
- If you suspect that the distribution software contains bugs, and
- you're sure that you have not done anything wrong, contact the
- maintainer of the distribution to report the bug.
-
- If you have other strange errors when installing Linux (especially
- if you downloaded the software yourself), be sure that you actually
- obtained all of the necessary files when downloading. For example,
- some people use the FTP command
-
- mget *.*
-
- when downloading the Linux software via FTP. This will download only
- those files that contain a ``.'' in their filenames; if there are any
- files without the ``.'', you will miss them. The correct command to
- use in this case is
-
- mget *
-
- The best advice is to retrace your steps when something goes wrong.
- You may think that you have done everything correctly, when in fact
- you forgot a small but important step somewhere along the way. In
- many cases, just attempting to re-download or re-install the Linux
- software can solve the problem. Don't beat your head against the wall
- any longer than you have to!
- Also, if Linux unexpectedly hangs during installation, there may be
- a hardware problem of some kind. See Section 2.5.2 for hints.
-
- 2.5.4 Problems after installing Linux
-
- You've spent an entire afternoon installing Linux. In order to make
- space for it, you wiped your MS-DOS and OS/2 partitions, and tearfully
- deleted your copies of SimCity and Wing Commander. You reboot the
- system, and nothing happens. Or, even worse, something happens, but
- it's not what should happen. What do you do?
- In Section 2.5.1, we covered some of the most common problems that
- can occur when booting the Linux installation media---many of those
- problems may apply here. In addition, you may be victim to one of the
- following maladies.
-
- 2.5.4.1 Problems booting Linux from floppy
-
- If you are using a floppy to boot Linux, you may need to specify
- the location of your Linux root partition at boot time. This is
- especially true if you are using the original installation floppy
- itself, and not a custom boot floppy created during installation.
- While booting the floppy, hold down [shift] or [ctrl]. This should
- present you with a boot menu; press [tab] to see a list of available
- 2.5. Running Into Trouble 82
- _______________________________________________________________________
-
- options. For example, many distributions allow you to type
-
- boot: linux hd=<partition>
-
- at the boot menu, where <partition> is the name of the Linux root
- partition, such as /dev/hda2. Consult the documentation for your
- distribution for details.
-
- 2.5.4.2 Problems booting Linux from the hard drive
-
- If you opted to install LILO, instead of creating a boot floppy, then
- you should be able to boot Linux from the hard drive. However, the
- automated LILO installation procedure used by many distributions is
- not always perfect. It may make incorrect assumptions about your
- partition layout, in which case you will need to re-install LILO to
- get everything right. Installing LILO is covered in Chapter 4.
-
- o System reports ``Drive not bootable---Please insert system disk.''
- You will get this error message if the hard drive's master boot
- record is corrupt in some way. In most cases, it's harmless, and
- everything else on your drive is still intact. There are several
- ways around this:
-
-
- 1. While partitioning your drive using fdisk, you may have
- deleted the partition that was marked as ``active''. MS-DOS
- and other operating systems attempt to boot the ``active''
- partition at boot time (Linux pays no attention to whether the
- partition is ``active'' or not). You may be able to boot
- MS-DOS from floppy and run FDISK to set the active flag on
- your MS-DOS paritition, and all will be well.
-
- Another command to try (with MS-DOS 5.0 and higher) is
-
-
- FDISK /MBR
-
-
- This command will attempt to rebuild the hard drive master
- boot record for booting MS-DOS, overwriting LILO. If you no
- longer have MS-DOS on your hard drive, you'll need to boot
- Linux from floppy and attempt to install LILO later.
-
- 2. If you created an MS-DOS partition using Linux's version of
- fdisk, or vice versa, you may get this error. You should
- create MS-DOS partitions only using MS-DOS's version FDISK.
- (The same applies to operating systems other than MS-DOS.)
- The best solution here is either to start from scratch and
- repartition the drive correctly, or to merely delete and
- re-create the offending partitions using the correct version
- 2.5. Running Into Trouble 83
- _______________________________________________________________________
-
- of fdisk.
-
- 3. The LILO installation procedure may have failed. In this
- case, you should either boot from your Linux boot floppy
- (if you have one), or from the original installation media.
- Either of these should provide options for specifying the
- Linux root partition to use when booting. Hold down [shift]
- or [ctrl] at boot time, and press [tab] from the boot menu for
- a list of options.
-
-
- o When booting the system from the hard drive, MS-DOS (or another
- operating system) starts instead of Linux. First of all, be
- sure that you actually installed LILO when installing the Linux
- software. If not, then the system will still boot MS-DOS (or
- whatever other operating system you may have) when you attempt to
- boot from the hard drive. In order to boot Linux from the hard
- drive, you will need to install LILO (see Chapter 4).
-
- On the other hand, if you did install LILO, and another operating
- system boots instead of Linux, then you have LILO configured to
- boot that other operating system by default. While the system
- is booting, hold down [shift] or [ctrl], and press [tab] at the
- boot prompt. This should present you with a list of possible
- operating systems to boot; select the appropriate option (usually
- just ``linux'') to boot Linux.
-
- If you wish to select Linux as the default operating system to
- boot, you will need to re-install LILO. See Chapter 4.
-
- It also may be possible that you attempted to install LILO, but
- the installation procedure failed in some way. See the previous
- item.
-
- 2.5.4.3 Problems logging in
-
- After booting Linux, you should be presented with a login prompt, like
- so:
-
- linux login:
-
- At this point, either the distribution's documentation or the system
- itself will tell you what to do. For many distributions, you simply
- login as root, with no password. Other possible usernames to try are
- guest or test.
- Most newly-installed Linux systems should not require a password
- for the initial login. However, if you are asked to enter a password,
- there may be a problem. First, try using a password equivalent to the
- username; that is, if you are logging in as root, use ``root'' as the
- password.
- 2.5. Running Into Trouble 84
- _______________________________________________________________________
-
- If you simply can't login, there may be a problem. First, consult
- your distribution's documentation; the username and password to use
- may be buried in there somewhere. The username and password may have
- been given to you during the installation procedure, or they may be
- printed on the login banner.
- One cause of this may be a problem with installing the Linux
- login and initialization files. If this is the case, you may
- need to reinstall (at least parts of) the Linux software, or boot
- your installation media and attempt to fix the problem by hand---see
- Chapter 4 for hints.
-
- 2.5.4.4 Problems using the system
-
- If login is successful, you should be presented with a shell prompt
- (such as ``#'' or ``$'') and can happily roam around your system.
- However, there are some initial problems with using the system that
- sometimes creep up.
- The most common initial configuration problem is incorrect file or
- directory permissions. This can cause the error message
-
- Shell-init: permission denied
-
- to be printed after logging in (in fact, any time you see the message
- ``permission denied'' you can be fairly certain that it is a problem
- with file permissions).
- In many cases, it's a simple matter of using the chmod command to
- fix the permissions of the appropriate files or directories. For
- example, some distributions of Linux once used the (incorrect) file
- mode 0644 for the root directory (/). The fix was to issue the
- command
-
- # chmod 755 /
-
- as root. However, in order to issue this command, you needed to boot
- from the installation media and mount your Linux root filesystem by
- hand---a hairy task for most newcomers.
- As you use the system, you may run into places where file and
- directory permissions are incorrect, or software does not work as
- configured. Welcome to the world of Linux! While most distributions
- are quite trouble-free, very few of them are perfect. We don't want
- to cover all of those problems here. Instead, throughout the book we
- help you to solve many of these configuration problems by teaching you
- how to find them and fix them yourself. In Chapter 1 we discussed
- this philosophy in some detail. In Chapter 4, we give hints for
- fixing many of these common configuration problems.
-
-
-
-
-
-
-
-
- Chapter 3
-
-
-
-
- Linux Tutorial
-
-
-
- 3.1 Introduction
-
- New users of UNIX and Linux may be a bit intimidated by the size and
- apparent complexity of the system before them. There are many good
- books on using UNIX out there, for all levels of expertise from novice
- to expert. However, none of these books covers, specifically, an
- introduction to using Linux. While 95% of using Linux is exactly like
- using other UNIX systems, the most straightforward way to get going on
- your new system is with a tutorial tailored for Linux. Herein is such
- a tutorial.
- This chapter does not go into a large amount of detail or cover
- many advanced topics. Instead, it is intended to get the new Linux
- user running, on both feet, so that he or she may then read a more
- general book about UNIX and understand the basic differences between
- other UNIX systems and Linux.
- Very little is assumed here, except perhaps some familiarity with
- personal computer systems, and MS-DOS. However, even if you're not an
- MS-DOS user, you should be able to understand everything here. At
- first glance, UNIX looks a lot like MS-DOS (after all, parts of MS-DOS
- were modeled on the CP/M operating system, which in turn was modeled
- on UNIX). However, only the very superficial features of UNIX resemble
- MS-DOS in any way. Even if you're completely new to the PC world,
- this tutorial should be of help.
- And, before we begin: Don't be afraid to experiment. The system
- won't bite you. You can't destroy anything by working on the system.
- UNIX has some amount of security built in, to prevent ``normal'' users
- (the role which you will now assume) from damaging files which are
- essential to the system. Even so, the absolute worst thing that can
- happen is that you'll delete all of your files---and you'll have to go
- back and re-install the system. So, at this point, you have nothing
- to lose.
-
-
-
-
-
-
- 85
- 3.2. Basic UNIX Concepts 86
- _______________________________________________________________________
-
- 3.2 Basic UNIX Concepts
-
- UNIX is a multitasking, multiuser operating system. This means that
- there can be many people using one computer at the same time, running
- many different applications. (This differs from MS-DOS, where only
- one person can use the system at any one time.) Under UNIX, for users
- to identify themselves to the system, they must log in, which entails
- two steps: Entering your login name (the name which the system
- identifies you as), and entering your password, which is your personal
- secret key to logging into your account. Because only you know your
- password, no one else can login to the system under your username.
- On traditional UNIX systems, the system administrator will assign
- you a username and an initial password when you are given an account
- on the system. However, because you are the system administrator, you
- must set up your own account before you can login---see Section 3.2.1,
- below. For the following discussions, we'll use the imaginary
- username ``larry''.
- In addition, each UNIX system has a hostname assigned to it. It
- is this hostname that gives your machine a name, gives it character
- and charm. The hostname is used to identify individual machines
- on a network, but even if your machine isn't networked, it should
- have a hostname. In Section 4.10.2 we'll cover setting your
- system's hostname. For our examples, below, the system's hostname is
- ``mousehouse''.
-
- 3.2.1 Creating an account
-
- Before you can use the system, you must set up a user account for
- yourself. This is because it's usually not a good idea to use the
- root account for normal use. The root account should be reserved
- for running privileged commands and for maintaining the system, as
- discussed in Section 4.1.
- In order to create an account for yourself, you need to login as
- root and use the useradd or adduser command. See Section 4.4 for
- information on this procedure.
-
- 3.2.2 Logging in
-
- At login time, you'll see a prompt resembling the following on your
- screen:
-
-
- mousehouse login:
-
- Here, enter your username, and press the [Return] key. Our hero,
- larry, would type the following:
-
- mousehouse login: larry
- Password:
- 3.2. Basic UNIX Concepts 87
- _______________________________________________________________________
-
- Now, enter your password. It won't be echoed to the screen when
- you login, so type carefully. If you mistype your password, you'll
- see the message
-
- Login incorrect
-
- and you'll have to try again.
- Once you have correctly entered the username and password, you are
- officially logged into the system, and are free to roam.
-
- 3.2.3 Virtual consoles
-
- The system's console is the monitor and keyboard connected directly to
- the system. (Because UNIX is a multiuser operating system, you may
- have other terminals connected to serial ports on your system, but
- these would not be the console.) Linux, like some other versions of
- UNIX, provides access to virtual consoles (or VC's), which allow you
- to have more than one login session from your console at a time.
- To demonstrate this, login to your system (as demonstrated above).
- Now, press [alt-F2]. You should see the login: prompt again. You're
- looking at the second virtual console---you logged into the first. To
- switch back to the first VC, press [alt-F1]. Voila! You're back to
- your first login session.
- A newly-installed Linux system probably allows you to access the
- first four VC's, using [alt-F1] through [alt-F4]. However, it is
- possible to enable up to 12 VC's---one for each function key on your
- keyboard. As you can see, use of VC's can be very powerful---you can
- be working on several different VC's at once.
- While the use of VC's is somewhat limiting (after all, you can only
- be looking at one VC at a time), it should give you a feel for UNIX's
- multiuser capabilities. While you're working on VC #1, you can switch
- over to VC #2 and start working on something else.
-
- 3.2.4 Shells and commands
-
- For most of your explorations in the world of UNIX, you'll be talking
- to the system through the use of a shell. A shell is just a
- program which takes user input (e.g., commands which you type) and
- translates them into instructions. This can be compared to the
- COMMAND.COM program under MS-DOS, which does essentially the same
- thing. The shell is just one interface to UNIX. There are many
- possible interfaces---such as the X Window System, which lets you run
- commands by using the mouse and keyboard in conjunction.
- As soon as you login, the system starts the shell, and you can type
- commands to it. Here's a quick example. Here, Larry logs in, and is
- left sitting at the shell prompt.
-
- mousehouse login: larry
- Password: larry's password
- Welcome to Mousehouse!
- 3.2. Basic UNIX Concepts 88
- _______________________________________________________________________
-
-
- /home/larry#
-
- ``/home/larry#'' is the shell's prompt, indicating that it's ready to
- take commands. (More on what the prompt itself means later.) Let's
- try telling the system to do something interesting:
-
- /home/larry# make love
- make: *** No way to make target `love'. Stop.
- /home/larry#
-
- Well, as it turns out make was the name of an actual program on the
- system, and the shell executed this program when given the command.
- (Unfortunately, the system was being unfriendly.)
- This brings us to one burning question: What are commands? What
- happens when you type ``make love''? The first word on the command
- line, ``make'', is the name of the command to be executed. Everything
- else on the command line is taken as arguments to this command.
- Examples:
-
- /home/larry# cp foo bar
-
- Here, the name of the command is ``cp'', and the arguments are ``foo''
- and ``bar''.
- When you type a command, the shell does several things. First of
- all, it looks at the command name, and checks to see if it is a
- command which is internal to the shell. (That is, a command which
- the shell knows how to execute itself. There are a number of these
- commands, and we'll go into them later.) The shell also checks to see
- if the command is an alias, or substitute name, for another command.
- If neither of these conditions apply, the shell looks for a program,
- on the disk, with the command's name. If it finds such a program,
- the shell runs it, giving the program the arguments specified on the
- command line.
- In our example, the shell looks for the program called make, and
- runs it with the argument love. Make is a program often used to
- compile large programs, and it takes as arguments the name of a
- ``target'' to compile. In the case of ``make love'', we instructed
- make to compile the target love. Because make can't find a target by
- this name, it fails with a humorous error message, and we are returned
- to the shell prompt.
- What happens if we type a command to a shell, and the shell can't
- find a program with the command name to run? Well, we can try it:
-
- /home/larry# eat dirt
- eat: command not found
- /home/larry#
-
- Quite simply, if the shell can't find a program with the name given
- on the command line (here, ``eat''), it prints an error message which
- 3.2. Basic UNIX Concepts 89
- _______________________________________________________________________
-
- should be self-explanatory. You'll often see this error message if
- you mistype a command (for example, if you had typed ``mkae love''
- instead of ``make love'').
-
- 3.2.5 Logging out
-
- Before we delve much further, we should tell you how to log out of the
- system. At the shell prompt, use the command
-
- /home/larry# exit
-
- to logout. There are other ways of logging out as well, but this is
- the most foolproof one.
-
- 3.2.6 Changing your password
-
- You should also be aware of how to change your password. The command
- passwd will prompt you for your old password, and your new password.
- It will ask you to reenter the new password for validation. Be
- careful not to forget your password---if you do, you will have to ask
- the system administrator to reset it for you. (If you're the system
- administrator, see Section 4.4.)
-
-
- 3.2.7 Files and directories
-
- Under most operating systems (UNIX included), there is the concept of
- a file, which is just a bundle of information which is given a name
- (called a filename). Examples of files would be your history term
- paper, an e-mail message, or an actual program which can be executed.
- Essentially, anything which is saved on disk is saved in an individual
- file.
- Files are identified by their filenames. For example, the file
- containing your history paper might be saved with the filename
- history-paper. These names usually identify the file and its contents
- in some form which is meaningful to you. There is no standard format
- for filenames as there is under MS-DOS and other operating systems;
- in general, filenames may contain any character (except /---see the
- discussion of pathnames, below), and are limited to 256 characters in
- length.
- With the concept of files comes the concept of directories. A
- directory is just a collection of files. It can be thought of
- as a ``folder'' which contains many different files. Directories
- themselves are given names, with which you can identify them.
- Furthermore, directories are maintained in a tree-like structure; that
- is, directories may contain other directories.
- A file may be referred to by its pathname, which is made up of
- the filename, preceded by the name of the directory which contains
- the file. For example, let's say that Larry has a directory called
- papers, which contains three files: history-final, english-lit, and
- masters-thesis. (Each of these three files contains information for
- 3.2. Basic UNIX Concepts 90
- _______________________________________________________________________
-
- three of Larry's ongoing projects.) To refer to the file english-lit,
- Larry can specify the file's pathname:
-
- papers/english-lit
-
- As you can see, the directory and file names are separated by
- a single slash (/). For this reason, filenames themselves cannot
- contain the / character. MS-DOS users will find this convention
- familiar, although in the MS-DOS world, the backslash (\) is used
- instead.
- As mentioned, directories can be nested within each other as well.
- For example, let's say that Larry has another directory, within
- papers, called notes. This directory contains the files math-notes
- and cheat-sheet. The pathname of the file cheat-sheet would be
-
- papers/notes/cheat-sheet
-
- Therefore, the pathname really is a ``path'' which you take to
- locate a certain file. The directory above a given subdirectory is
- known as the parent directory. Here, the directory papers is the
- parent of the notes directory.
-
- 3.2.8 The directory tree
-
- Most UNIX systems have a standard layout for files, so that system
- resources and programs can be easily located. This layout forms
- a directory tree, which starts at the ``/'' directory, also known
- as ``the root directory''. Directly underneath / are some important
- subdirectories: /bin, /etc, /dev, and /usr, among others. These
- directories in turn contain other directories which contain system
- configuration files, programs, and so on.
- In particular, each user has a home directory, which is the
- directory set aside for that user to store his or her files. In
- the examples above, all of Larry's files (such as cheat-sheet and
- history-final) were contained in Larry's home directory. Usually,
- user home directories are contained under /home, and are named for the
- user who owns that directory. Therefore, Larry's home directory is
- /home/larry.
- In Figure 3.2.8 a sample directory tree is represented. It should
- give you some idea of how the directory tree on your system is
- organized.
-
- 3.2.9 The current working directory
-
- At any given time, commands that you type to the shell are given
- in terms of your current working directory. You can think of
- your working directory as the directory in which you are currently
- ``located''. When you first login, your working directory is set to
- your home directory---/home/larry in our case. Whenever you reference
- a file, you may refer to it in relationship to your current working
- 3.2. Basic UNIX Concepts 91
- _______________________________________________________________________
-
-
-
- /___|_bin
- |_dev
- |_etc
- |_home_____larry
- | |_sam
- |_lib
- |_proc
- |_tmp
- |_usr__|X386
- |_bin
- |_emacs
- |_etc
- |_g++-include
- |_include
- |_lib
- |_local_____bin
- | |_emacs
- | |_etc
- | |_lib
- |_man
- |_spool
- |_src_____linux
- |_tmp
-
-
-
- Figure 3.1: A typical (abridged) Unix directory tree.
-
-
-
- directory, instead of specifying the full pathname of the file.
- Here's an example. Larry has the directory papers, and papers
- contains the file history-final. If Larry wants to look at this file,
- he can use the command
-
- /home/larry# more /home/larry/papers/history-final
-
- The more command simply displays a file, one screen at a time.
- However, because Larry's current working directory is /home/larry, he
- can instead refer to the file relative to his current location. The
- command would be
-
- /home/larry# more papers/history-final
-
- Therefore, if you begin a filename (such as papers/final) with a
- character other than ``/'', the system assumes that you're referring
- 3.3. First Steps into UNIX 92
- _______________________________________________________________________
-
- to the file in terms relative to your current working directory. This
- is known as a relative pathname.
- On the other hand, if you begin a filename with a ``/'', the system
- interprets this as a full pathname---that is, a pathname including the
- entire path to the file, starting from the root directory, /. This is
- known as an absolute pathname.
-
- 3.2.10 Referring to home directories
-
- Under both tcsh and bash,(1) your home directory can be referred to
- using the tilde character (``~''). For example, the command
-
- /home/larry# more ~/papers/history-final
-
- is equivalent to
-
- /home/larry# more /home/larry/papers/history-final
-
- The ``~'' character is simply replaced with the name of your home
- directory by the shell.
- In addition, you can specify other user's home directories with
- the tilde as well. The pathname ``~karl/letters'' translates to
- ``/home/karl/letters'' by the shell (if /home/karl is karl's home
- directory). The use of the tilde is simply a shortcut; there is
- no directory named ``~''---it's just syntactic sugar provided by the
- shell.
-
-
- 3.3 First Steps into UNIX
-
- Before we begin, it is important to note that all file and command
- names on a UNIX system are case-sensitive (unlike operating systems
- such as MS-DOS). For example, the command make is very different than
- Make or MAKE. The same hold for file and directory names.
-
- 3.3.1 Moving around
-
- Now that we can login, and know how to refer to files using pathnames,
- how can we change our current working directory, to make life easier?
- The command for moving around in the directory structure is cd,
- short for ``change directory''. You'll notice that many often-used
- Unix commands are two or three letters. The usage of the cd command
- is:
-
- cd <directory>
-
- ----------------------------
- 1. tcsh and bash are two shells running under Linux. The shell is
- the program which reads user commands and executes them; most Linux
- systems enable either tcsh or bash for new user accounts.
- 3.3. First Steps into UNIX 93
- _______________________________________________________________________
-
- where <directory> is the name of the directory which you wish to
- change to.
- As we said, when you login, you begin in your home directory. If
- Larry wanted to move down into the papers subdirectory, he'd use the
- command
-
- /home/larry# cd papers
- /home/larry/papers#
-
- As you can see, Larry's prompt changes to reflect his current working
- directory (so he knows where he is). Now that he's in the papers
- directory, he can look at his history final with the command
-
- /home/larry/papers# more history-final
-
- Now, Larry is stuck in the papers subdirectory. To move back up to
- the parent directory, use the command
-
- /home/larry/papers# cd ..
- /home/larry#
-
- (Note the space between the ``cd'' and the ``..''.) Every directory
- has an entry named ``..'' which refers to the parent directory.
- Similarly, every directory has an entry named ``.'' which refers to
- itself. Therefore, the command
-
- /home/larry/papers# cd .
-
- gets us nowhere.
- You can also use absolute pathnames in the cd command. To cd into
- Karl's home directory, we can use the command
-
- /home/larry/papers# cd /home/karl
- /home/karl#
-
- Also, using cd with no argument will return you to your own home
- directory.
-
- /home/karl# cd
- /home/larry#
-
-
- 3.3.2 Looking at the contents of directories
-
- Now that you know how to move around directories you probably think,
- ``So what?'' The basic skill of moving around directories is fairly
- useless, so let's introduce a new command, ls. ls prints a listing of
- files and directories, by default from your current directory. For
- example:
- 3.3. First Steps into UNIX 94
- _______________________________________________________________________
-
- /home/larry# ls
- Mail
- letters
- papers
- /home/larry#
-
- Here we can see that Larry has three entries in his current
- directory: Mail, letters, and papers. This doesn't tell us
- much---are these directories or files? We can use the -F option on
- the ls command to tell us more.
-
- /home/larry# ls --F
- Mail/
- letters/
- papers/
- /home/larry#
-
-
- From the / appended to each filename, we know that these three entries
- are in fact subdirectories.
- Using ls -F may also append ``*'' to the end of a filename. This
- indicates that the file is an executable, or a program which can be
- run. If nothing is appended to the filename using ls -F, the file
- is a ``plain old file'', that is, it's neither a directory, or an
- executable.
- In general, each UNIX command may take a number of options in
- addition to other arguments. These options usually begin with a
- ``-'', as demonstrated above with ls -F. The -F option tells ls to
- give more information about the type of the files involved---in this
- case, printing a / after each directory name.
- If you give ls a directory name, it will print the contents of that
- directory.
-
- /home/larry# ls --F papers
- english-lit
- history-final
- masters-thesis
- notes/
- /home/larry#
-
- Or, for a more interesting listing, let's see what's in the
- system's /etc directory.
-
-
- /home/larry# ls /etc
-
-
- Images ftpusers lpc rc.new shells
- adm getty magic rc0.d startcons
- bcheckrc gettydefs motd rc1.d swapoff
-
- 3.3. First Steps into UNIX 95
- _______________________________________________________________________
-
- brc group mount rc2.d swapon
- brc~ inet mtab rc3.d syslog.conf
- csh.cshrc init mtools rc4.d syslog.pid
- csh.login init.d pac rc5.d syslogd.reload
- default initrunlvl passwd rmt termcap
- disktab inittab printcap rpc umount
- fdprm inittab.old profile rpcinfo update
- fstab issue psdatabase securetty utmp
- ftpaccess lilo rc services wtmp
- /home/larry#
-
-
-
- (For those MS-DOS users out there, notice how the filenames can be
- longer than 8 characters, and can contain periods in any position. It
- is even possible to have more than one period in a filename.)
- Let's cd up to the top of the directory tree, using ``cd ..'', and
- then down to another directory: /usr/bin.
-
- /home/larry# cd ..
- /home# cd ..
- /# cd usr
- /usr# cd bin
- /usr/bin#
-
- You can also move into directories in multiple steps, as in cd
- /usr/bin.
- Try moving around various directories, using ls and cd. In some
- cases, you may run into a foreboding ``Permission denied'' error
- message. This is simply the concept of UNIX security kicking in: in
- order to ls or to cd into a directory, you must have permission to do
- so. We'll talk more about this in Section 3.9.
-
-
- 3.3.3 Creating new directories
-
- It's time to learn how to create directories. This involves the use
- of the mkdir command. Try the following:
-
- /home/larry# mkdir foo
- /home/larry# ls -F
- Mail/
- foo/
- letters/
- papers/
- /home/larry# cd foo
- /home/larry/foo# ls
- 3.3. First Steps into UNIX 96
- _______________________________________________________________________
-
- /home/larry/foo#
-
- Congrats! You've just made a new directory and moved into it.
- Since there aren't any files in this new directory, let's learn how to
- copy files from one place to another.
-
- 3.3.4 Copying files
-
- Copying files is done with the command cp:
-
-
- /home/larry/foo# cp /etc/termcap .
- /home/larry/foo# cp /etc/shells .
- /home/larry/foo# ls --F
- shells termcap
- /home/larry/foo# cp shells bells
- /home/larry/foo# ls --F
- bells shells termcap
- /home/larry/foo#
-
- The cp command copies the files listed on the command line to the
- file or directory given as the last argument. Notice how we use the
- directory ``.'' to refer to the current directory.
-
- 3.3.5 Moving files
-
- A new command named mv moves files, instead of copying them. The
- syntax is very straightforward.
-
- /home/larry/foo# mv termcap sells
- /home/larry/foo# ls -F
- bells sells shells
- /home/larry/foo#
-
- Notice how termcap no longer exists, but in its place is the file
- sells. This can be used to rename files, as we have just done, but
- also to move a file to a completely new directory.
- ! Note: mv and cp will overwrite the destination file (if it already
- exists) without asking you. Be careful when you move a file into
- another directory: there may already be a file with the same name in
- that directory, which you'll overwrite!
-
- 3.3.6 Deleting files and directories
-
- You now have an ugly rhyme developing with the use of the ls command.
- To delete a file, use the rm command. (``rm'' stands for ``remove'').
-
-
- /home/larry/foo# rm bells sells
- /home/larry/foo# ls -F
- 3.3. First Steps into UNIX 97
- _______________________________________________________________________
-
- shells
- /home/larry/foo#
-
- We're left with nothing but shells, but we won't complain. Note
- that rm by default won't prompt you before deleting a file---so be
- careful.
- A related command to rm is rmdir. This command deletes a
- directory, but only if the directory is empty. If the directory
- contains any files or subdirectories, rmdir will complain.
-
- 3.3.7 Looking at files
-
- The commands more and cat are used for viewing the contents of files.
- more displays a file, one screenful at a time, while cat displays the
- whole file at once.
- To look at the file shells, we can use the command
-
- /home/larry/foo# more shells
-
- In case you're interested what shells contains, it's a list of
- valid shell programs on your system. On most systems, this includes
- /bin/sh, /bin/bash, and /bin/csh. We'll talk about these different
- types of shells later.
- While using more, press [Space] to display the next page of text,
- and [b] to display the previous page. There are other commands
- available in more as well, these are just the basics. Pressing [q]
- will quit more.
- Quit more and try cat /etc/termcap. The text will probably fly by
- much too quickly for you to read it. The name ``cat'' actually stands
- for ``concatenate'', which is the real use of the program. The cat
- command can be used to concatenate the contents of several files and
- save the result to another file. This will be discussed later.
-
-
- 3.3.8 Getting online help
-
- Almost every UNIX system, Linux included, provides a facility known
- as ``manual pages'', or ``man pages'' for short. These man pages
- contain online documentation for all of the various system commands,
- resources, configuration files, and so on.
- The command used to access man pages is man. For example, if
- you're interested in finding out about the other options of the ls
- command, you can type
-
- /home/larry# man ls
-
- and the man page for ls will be displayed.
- Unfortunately, most of the man pages out there are written for
- those who already have some idea of what the command or resource does.
- For this reason, man pages usually only contain the hardcore technical
- details of the command, without a lot of tutorial. However, man pages
- 3.4. Summary of Basic Commands 98
- _______________________________________________________________________
-
- can be an invaluable resource for jogging your memory if you forget
- the syntax of a command. Man pages will also tell you a lot about the
- commands which we won't tell you in this book.
- I suggest that you try man for the commands we've already gone
- over, and whenever I introduce a new command. You'll notice some
- of these commands won't have man pages. This could be for several
- reasons. For one, the man pages haven't been written yet (the Linux
- Documentation Project is responsible for man pages under Linux as
- well. We are gradually accumulating most of the man pages available
- for the system). Secondly, the the command might be an internal shell
- command, or an alias (as discussed in Section 3.2.4), in which case it
- would not have a man page of its own. One example is cd, which is a
- shell internal command. The shell actually processes the cd---there
- is no separate program which contains this command.
-
-
- 3.4 Summary of Basic Commands
-
- This section introduces some of the most useful basic commands on a
- UNIX system, including those covered in the last section.
- Note that options usually begin with a ``-'', and in most cases
- multiple one-letter options may be combined using a single ``-''. For
- example, instead of using the command ls -l -F, it is adequate to use
- ls -lF.
- Instead of listing all of the options available for each of these
- commands, we'll only talk about those which are useful or important
- at this time. In fact, most of these commands have a large number
- of options (most of which you'll never use). You can use man to see
- the manual pages for each command, which list all of the available
- options.
- Also note that many of these commands take a list of files or
- directories as arguments, denoted by ``<file1> ... <fileN>''. For
- example, the cp command takes as arguments a list of files to copy,
- followed by the destination file or directory. When copying more than
- one file, the destination must be a directory.
- cd Change the current working directory.
- Syntax: cd <directory>
- <directory> is the directory to change to. (``.'' refers
- to the current directory, ``..'' the parent directory.)
- Example: cd ../foo sets the current directory to ../foo.
-
- ls Displays information about the named files and directo-
- ries.
- Syntax: ls <file1> <file2> ... <fileN>
- Where <file1> through <fileN> are the filenames or
- directories to list. Options: There are more options
- than you want to think about. The most commonly used are
- -F (used to display some information about the type of the
- file), and -l (gives a ``long'' listing including file
- size, owner, permissions, and so on. This will be covered
- 3.4. Summary of Basic Commands 99
- _______________________________________________________________________
-
- in detail later.)
- Example: ls -lF /home/larry will display the contents of
- the directory /home/larry.
-
- cp Copies file(s) to another file or directory.
- Syntax: cp <file1> <file2> ... <fileN> <destination>
- Where <file1> through <fileN> are the files to copy, and
- <destination> is the destination file or directory.
- Example: cp ../frog joe copies the file ../frog to the
- file or directory joe.
-
- mv Moves file(s) to another file or directory. This command
- does the equivalent of a copy followed by the deletion of
- the original. This can be used to rename files, as in the
- MS-DOS command RENAME.
- Syntax: mv <file1> <file2> ... <fileN> <destination>
- Where <file1> through <fileN> are the files to move, and
- <destination> is the destination file or directory.
- Example: mv ../frog joe moves the file ../frog to the
- file or directory joe.
-
- rm Deletes files. Note that when files are deleted under
- UNIX, they are unrecoverable (unlike MS-DOS, where you can
- usually ``undelete'' the file).
- Syntax: rm <file1> <file2> ... <fileN>
- Where <file1> through <fileN> are the filenames to delete.
- Options: -i will prompt for confirmation before deleting
- the file.
- Example: rm -i /home/larry/joe /home/larry/frog deletes
- the files joe and frog in /home/larry.
-
- mkdir Creates new directories.
- Syntax: mkdir <dir1> <dir2> ... <dirN>
- Where <dir1> through <dirN> are the directories to create.
- Example: mkdir /home/larry/test creates the directory
- test under /home/larry.
- rmdir This command deletes empty directories. When using rmdir,
- your current working directory must not be within the
- directory to be deleted.
- Syntax: rmdir <dir1> <dir2> ... <dirN>
- Where <dir1> through <dirN> are the directories to delete.
- Example: rmdir /home/larry/papers deletes the directory
- /home/larry/papers, if it is empty.
-
- man Displays the manual page for the given command or resource
- (that is, any system utility which isn't a command, such
- as a library function.) Syntax: man <command>
- Where <command> is the name of the command or resource to
- get help on.
- Example: man ls gives help on the ls command.
- 3.5. Exploring the File System 100
- _______________________________________________________________________
-
- more Displays the contents of the named files, one screenful at
- a time.
- Syntax: more <file1> <file2> ... <fileN>
- Where <file1> through <fileN> are the files to display.
- Example: more papers/history-final displays the file
- papers/history-final.
-
- cat Officially used to concatenate files, cat is also used to
- display the entire contents of a file at once.
- Syntax: cat <file1> <file2> ... <fileN>
- Where <file1> through <fileN> are the files to display.
- Example: cat letters/from-mdw displays the file
- letters/from-mdw.
-
- echo Simply echoes the given arguments.
- Syntax: echo <arg1> <arg2> ... <argN>
- Where <arg1> through <argN> are the arguments to echo.
- Example: echo "Hello world" displays the string ``Hello
- world''.
-
- grep Display all of the lines in the named file(s) matching the
- given pattern.
- Syntax: grep <pattern> <file1> <file2> ... <fileN>
- Where <pattern> is a regular expression pattern, and
- <file1> through <fileN> are the files to search.
- Example: grep loomer /etc/hosts will display all lines in
- the file /etc/hosts which contain the pattern ``loomer''.
-
-
- 3.5 Exploring the File System
-
- The file system is the collection of files and the hierarchy of
- directories on your system. I promised before to escort you around
- the filesystem and the time has come.
- You have the skills and the knowledge to make sense out of what I'm
- saying, and you have a roadmap. (Refer to Figure 3.2.8 on page 91).
- First, change to the root directory (cd /), and do an ls -F. You'll
- probably see these directories(2): bin, dev, etc, home, install, lib,
- mnt, proc, root, tmp, user, usr, and var.
- Let's take a look at each of these directories.
-
- /bin /bin is short for ``binaries'', or executables. This is
- where many essential system programs reside. Use the
- command ``ls -F /bin'' to list the files here. If you
- look down the list you may see a few commands that you
- recognize, such as cp, ls, and mv. These are the actual
-
- ----------------------------
- 2. You may see others, and you might not see all of them. Don't
- worry. Every release of Linux differs in some respects.
- 3.5. Exploring the File System 101
- _______________________________________________________________________
-
- programs for these commands. When you use the cp command,
- you're running the program /bin/cp.
-
- Using ls -F, you'll see that most (if not all) of the
- files in /bin have an asterisk (``*'') appended to their
- filenames. This indicates that the files are executables,
- as described in Section 3.3.2.
- /dev Next on our stop is /dev. Take a look, again with ls -F.
-
- The ``files'' in /dev are known as device drivers---they
- are used to access system devices and resources, such as
- disk drives, modems, memory, and so on. For example, just
- as you can read data from a file, you can read input from
- the mouse by accessing /dev/mouse.
- The filenames beginning with fd are floppy disk devices.
- fd0 is the first floppy disk drive, fd1 the second. Now,
- the astute among you will notice that there are more
- floppy disk devices then just the two I've listed above:
- they represent specific types of floppy disks. For
- example, fd1H1440 will access high-density, 3.5" diskettes
- in drive 1.
-
- Here is a list of some of the most commonly used device
- files. Note that even though you may not have some of
- the devices listed below, the chances are that you'll have
- entries in /dev for them anyway.
-
- o /dev/console refers to the system's console---that is,
- the monitor connected directly to your system.
-
- o The various /dev/ttyS and /dev/cua devices are used
- for accessing serial ports. For example, /dev/ttyS0
- refers to ``COM1'' under MS-DOS. The /dev/cua devices
- are ``callout'' devices, which are used in conjunction
- with a modem.
-
- o The device names beginning with hd access hard drives.
- /dev/hda refers to the whole first hard disk, while
- hda1 refers to the first partition on /dev/hda.
-
- o The device names beginning with sd are SCSI drives.
- If you have a SCSI hard drive, instead of accessing
- it through /dev/hda, you would access /dev/sda. SCSI
- tapes are accessed via st devices, and SCSI CD-ROM via
- sr devices.
-
- o The device names beginning with lp access parallel
- ports. /dev/lp0 refers to ``LPT1'' in the MS-DOS
- world.
- 3.5. Exploring the File System 102
- _______________________________________________________________________
-
- o /dev/null is used as a ``black hole''---any data sent
- to this device is gone forever. Why is this useful?
- Well, if you wanted to suppress the output of a
- command appearing on your screen, you could send that
- output to /dev/null. We'll talk more about this
- later.
-
- o The device names beginning with /dev/tty refer to the
- ``virtual consoles'' on your system (accessed via by
- pressing [alt-F1], [alt-F2], and so on). /dev/tty1
- refers to the first VC, /dev/tty2 refers to the
- second, and so on.
-
- o The device names beginning with /dev/pty are ``pseudo-
- terminals''. They are used to provide a ``terminal''
- to remote login sessions. For example, if your
- machine is on a network, incoming telnet logins would
- use one of the /dev/pty devices.
-
-
- /etc /etc contains a number of miscellaneous system config-
- uration files. These include /etc/passwd (the user
- database), /etc/rc (the system initialization script), and
- so on.
-
- /sbin sbin is used for storing essential system binaries, to be
- used by the system administrator.
-
- /home /home contains user's home directories. For example,
- /home/larry is the home directory for the user ``larry''.
- On a newly-installed system, there may not be any users in
- this directory.
-
- /lib /lib contains shared library images. These files contain
- code which many programs share in common. Instead of each
- program containing its own copy of these shared routines,
- they are all stored in one common place, in /lib. This
- makes executable files smaller, and saves space on your
- system.
-
- /proc /proc is a ``virtual filesystem'', the files in which are
- stored in memory, not on the drive. They refer to the
- various processes running on the system, and allow you
- to get information about what programs and processes are
- running at any given time. We'll go into more detail in
- Section 3.11.1.
- /tmp Many programs have a need to generate some information and
- store it in a temporary file. The canonical location for
- these files is in /tmp.
- 3.5. Exploring the File System 103
- _______________________________________________________________________
-
- /usr /usr is a very important directory. It contains a number
- of subdirectories which in turn contain some of the most
- important and useful programs and configuration files used
- on the system.
-
- The various directories described above are essential for
- the system to operate, but most of the things found
- in /usr are optional for the system. However, it is
- those optional things which make the system useful and
- interesting. Without /usr, you'd more or less have a
- boring system, only with programs like cp and ls. /usr
- contains most of the larger software packages and the
- configuration files which accompany them.
- /usr/X386 /usr/X386 contains The X Window System, if you installed
- it. The X Window System is a large, powerful graphical
- environment which provides a large number of graphical
- utilities and programs, displayed in ``windows'' on your
- screen. If you're at all familiar with the Microsoft
- Windows or Macintosh environments, X Windows will look
- very familiar. The /usr/X386 directory contains all
- of the X Windows executables, configuration files, and
- support files. This will be covered in more detail in
- Section 5.1.
-
- /usr/bin /usr/bin is the real warehouse for software on any UNIX
- system. It contains most of the executables for programs
- not found in other places, such as /bin.
-
- /usr/etc Just as /etc contained miscellaneous system programs and
- configuration files, /usr/etc contains even more of these
- utilities and files. In general, the files found in
- /usr/etc are not essential to the system, unlike those
- found in /etc, which are.
-
- /usr/include
- /usr/include contains include files for the C compiler.
- These files (most of which end in .h, for ``header'')
- declare data structure names, subroutines, and constants
- used when writing programs in C. Those files found in
- /usr/include/sys are generally used when programming on
- the UNIX system level. If you are familiar with the C
- programming language, here you'll find header files such
- as stdio.h, which declares functions such as printf().
-
- /usr/g++-include
- /usr/g++-include contains include files for the C++
- compiler (much like /usr/include).
-
- /usr/lib /usr/lib contains the ``stub'' and ``static'' library
- equivalents to the files found in /lib. When compiling
- a program, the program is ``linked'' with the libraries
- 3.5. Exploring the File System 104
- _______________________________________________________________________
-
- found in /usr/lib, which then directs the program to look
- in /lib when it needs the actual code in the library. In
- addition, various other programs store configuration files
- in /usr/lib.
-
- /usr/local /usr/local is a lot like /usr---it contains various
- programs and files not essential to the system, but which
- make the system fun and exciting. In general, those
- programs found in /usr/local are specialized for your
- system specifically---that is, /usr/local differs greatly
- between UNIX systems.
- Here, you'll find large software packages such as TeX
- (a document formatting system) and Emacs (a large and
- powerful editor), if you installed them.
-
- /usr/man This directory contains the actual man pages. There are
- two subdirectories for every man page ``section'' (use the
- command man man for details). For example, /usr/man/man1
- contains the source (that is, the unformatted original)
- for man pages in section 1, and /usr/man/cat1 contains the
- formatted man pages for section 1.
-
- /usr/src /usr/src contains the source code (the uncompiled program)
- for various programs on your system. The most important
- thing here is /usr/src/linux, which contains the source
- code for the Linux kernel.
-
- /var /var holds directories that often change in size or tend
- to grow. Many of those directories used to reside in
- /usr, but since we are trying to keep it relatively
- unchangeable, the directories that change often have been
- moved to /var. Some of those directories are:
-
- /var/adm /var/adm contains various files of interest to the system
- administrator, specifically system logs, which record any
- errors or problems with the system. Other files record
- logins to the system, as well as failed login attempts.
- This will be covered in Chapter 4.
-
- /var/spool /var/spool contains files which are to be ``spooled''
- to another program. For example, if your machine is
- connected to a network, incoming mail will be stored in
- /var/spool/mail, until you read it or delete it. Outgoing
- or incoming news articles may be found in /var/spool/news,
- and so on.
- 3.6. Types of shells 105
- _______________________________________________________________________
-
- 3.6 Types of shells
-
- As I have mentioned too many times before, UNIX is a multitasking,
- multiuser operating system. Multitasking is very useful, and once you
- get used to it, you'll use it all of the time. Before long, you'll
- be able to run programs in the ``background'', switch between multiple
- tasks, and ``pipeline'' programs together to achieve complicated
- results with a single command.
- Many of the features we'll be covering in this section are features
- provided by the shell itself. Be careful not to confuse UNIX
- (the actual operating system) with the shell---the shell is just an
- interface to the underlying system. The shell provides a great deal
- of functionality on top of UNIX itself.
- The shell is not only an interpreter for your interactive commands,
- which you type at the prompt. It is also a powerful programming
- language, which allows you to write shell scripts, to ``batch''
- several shell commands together in a file. MS-DOS users will
- recognize the similarity to ``batch files''. Use of shell scripts is
- a very powerful tool, which will allow you to automate and expand your
- usage of UNIX. See Section 3.13.1 for more information.
- There are several types of shells in the UNIX world. The two major
- types are the ``Bourne shell'' and the ``C shell''. The Bourne shell
- uses a command syntax like the original shell on early UNIX systems,
- such as System III. The name of the Bourne shell on most UNIX systems
- is /bin/sh (where sh stands for ``shell''). The C shell (not to be
- confused with sea shell) uses a different syntax, somewhat like the
- programming language C, and on most UNIX systems is named /bin/csh.
- Under Linux, there are several variations of these shells
- available. The two most commonly used are the Bourne Again Shell, or
- ``Bash'' (/bin/bash), and Tcsh (/bin/tcsh). Bash is a form of the
- Bourne shell with many of the advanced features found in the C shell.
- Because Bash supports a superset of the Bourne shell syntax, any shell
- scripts written in the standard Bourne shell should work with Bash.
- For those who prefer to use the C shell syntax, Linux supports Tcsh,
- which is an expanded version of the original C shell.
- The type of shell that you decide to use is mostly a religious
- issue. Some folks prefer the Bourne shell syntax with the advanced
- features of Bash, and some prefer the more structured C shell syntax.
- As far as normal commands, such as cp and ls, are concerned, the type
- of shell you're using doesn't matter---the syntax is the same. Only
- when you start to write shell scripts or use some of the advanced
- features of the shell do the differences between shell types begin to
- matter.
- As we're discussing some of the features of the shell, below, we'll
- note those differences between Bourne and C shells. However, for the
- purposes of this manual, most of those differences are minimal. (If
- you're really curious at this point, read the man pages for bash and
- tcsh).
- 3.7. Wildcards 106
- _______________________________________________________________________
-
- 3.7 Wildcards
-
- A key feature of most Unix shells is the ability to reference more
- than one filename using special characters. These so-called wildcards
- allow you to refer to, say, all filenames which contain the character
- ``n''.
- The wildcard ``*'' refers to any character or string of characters
- in a filename. For example, when you use the character ``*'' in a
- filename, the shell replaces it with all possible substitutions from
- filenames in the directory which you're referencing.
- Here's a quick example. Let's suppose that Larry has the files
- frog, joe, and stuff in his current directory.
-
- /home/larry# ls
- frog joe stuff
- /home/larry#
-
- To access all files with the letter ``o'' in the filename, we can
- use the command
-
- /home/larry# ls *o*
- frog joe
- /home/larry#
-
- As you can see, the use of the ``*'' wildcard was replaced with all
- substitutions which matched the wildcard from filenames in the current
- directory.
- The use of ``*'' by itself simply matches all filenames, because
- all characters match the wildcard.
-
- /home/larry# ls *
- frog joe stuff
- /home/larry#
-
- Here are a few more examples.
-
- /home/larry# ls f*
- frog
- /home/larry# ls *ff
- stuff
- /home/larry# ls *f*
- frog stuff
- /home/larry# ls s*f
- stuff
- /home/larry#
-
- The process of changing a ``*'' into filenames is called wildcard
- expansion and is done by the shell. This is important: the
- individual commands, such as ls, never see the ``*'' in their list of
- parameters. The shell expands the wildcard to include all of the
- 3.7. Wildcards 107
- _______________________________________________________________________
-
- filenames which match. So, the command
-
- /home/larry# ls *o*
-
- is expanded by the shell to actually be
-
- /home/larry# ls frog joe
-
- One important note about the ``*'' wildcard. Using this wildcard
- will not match filenames which begin with a single period (``.'').
- These files are treated as ``hidden'' files---while they are not
- really hidden, they don't show up on normal ls listings, and aren't
- touched by the use of the ``*'' wildcard.
- Here's an example. We already mentioned that each directory has
- two special entries in it: ``.'' refers to the current directory,
- and ``..'' refers to the parent directory. However, when you use ls,
- these two entries don't show up.
-
- /home/larry# ls
- frog joe stuff
- /home/larry#
-
- If you use the -a switch with ls, however, you can display filenames
- which begin with ``.''. Observe:
-
- /home/larry# ls -a
- . .. .bash_profile .bashrc frog joe
- stuff
- /home/larry#
-
- Now we can see the two special entries, ``.'' and ``..'', as well
- as two other ``hidden'' files---.bash_profile and .bashrc. These two
- files are startup files used by bash when larry logs in. More on them
- in Section 3.13.3.
- Note that when we use the ``*'' wildcard, none of the filenames
- beginning with ``.'' are displayed.
-
- /home/larry# ls *
- frog joe stuff
- /home/larry#
-
- This is a safety feature: if the ``*'' wildcard matched filenames
- beginning with ``.'', it would also match the directory names ``.''
- and ``..''. This can be dangerous when using certain commands.
- Another wildcard is ``?''. The ``?'' wildcard will only expand
- a single character. Thus, ``ls ?'' will display all one character
- filenames, and ``ls termca?'' would display ``termcap'' but not
- ``termcap.backup''. Here's another example:
-
- /home/larry# ls j?e
- 3.8. UNIX Plumbing 108
- _______________________________________________________________________
-
- joe
- /home/larry# ls f??g
- frog
- /home/larry# ls ????f
- stuff
- /home/larry#
-
- As you can see, wildcards allow you to specify many files at one
- time. In the simple command summary, in Section 3.4, we said that
- the cp and mv commands actually can copy or move multiple files at one
- time. For example,
-
- /home/larry# cp /etc/s* /home/larry
-
- will copy all filenames in /etc beginning with ``s'' to the directory
- /home/larry. Therefore, the format of the cp command is really
-
- cp <file1> <file2> <file3> ... <fileN> <destination>
-
- where <file1> through <fileN> is a list of filenames to copy, and
- <destination> is the destination file or directory to copy them to.
- mv has an identical syntax.
- Note that if you are copying or moving more than one file, the
- <destination> must be a directory. You can only copy or move a single
- file to another file.
-
-
- 3.8 UNIX Plumbing
-
- 3.8.1 Standard input and output
-
- Many UNIX commands get input from what is known as standard input and
- send their output to standard output (often abbreviated as ``stdin''
- and ``stdout''). Your shell sets things up so that standard input is
- your keyboard, and standard output is the screen.
- Here's an example using the command cat. Normally, cat reads data
- from all of the filenames given on the command line and sends this
- data directly to stdout. Therefore, using the command
-
- /home/larry/papers# cat history-final masters-thesis
-
- will display the contents of the file history-final followed by
- masters-thesis.
- However, if no filenames are given to cat as parameters, it instead
- reads data from stdin, and sends it back to stdout. Here's an
- example.
-
- /home/larry/papers# cat
- Hello there.
- Hello there.
- 3.8. UNIX Plumbing 109
- _______________________________________________________________________
-
- Bye.
- Bye.
- [ctrl-D]
- /home/larry/papers#
-
- As you can see, each line that the user types (displayed in italics)
- is immediately echoed back by the cat command. When reading from
- standard input, commands know that the input is ``finished'' when they
- receive an EOT (end-of-text) signal. In general, this is generated by
- pressing [ctrl-D].
- Here's another example. The command sort reads in lines of text
- (again, from stdin, unless files are given on the command line), and
- sends the sorted output to stdout. Try the following.
-
- /home/larry/papers# sort
- bananas
- carrots
- apples
- [ctrl-D]
- apples
- bananas
- carrots
- /home/larry/papers#
-
- Now we can alphabetize our shopping list... isn't UNIX useful?
-
- 3.8.2 Redirecting input and output
-
- Now, let's say that we wanted to send the output of sort to a file,
- to save our shopping list elsewhere. The shell allows us to redirect
- standard output to a filename, using the ``>'' symbol. Here's how it
- works.
-
- /home/larry/papers# sort > shopping-list
- bananas
- carrots
- apples
- [ctrl-D]
- /home/larry/papers#
-
- As you can see, the result of the sort command isn't displayed,
- instead it's saved to the file shopping-list. Let's look at this
- file.
-
- /home/larry/papers# cat shopping-list
- apples
- bananas
- carrots
- /home/larry/papers#
- 3.8. UNIX Plumbing 110
- _______________________________________________________________________
-
- Now we can sort our shopping list, and save it, too! But let's
- suppose that we were storing our unsorted, original shopping list in
- the file items. One way of sorting the information and saving it to a
- file would be to give sort the name of the file to read, in lieu of
- standard input, and redirect standard output as we did above. As so:
-
- /home/larry/papers# sort items > shopping-list
- /home/larry/papers# cat shopping-list
- apples
- bananas
- carrots
- /home/larry/papers#
-
- However, there's another way of doing this. Not only can we redirect
- standard output, but we can redirect standard input as well, using the
- ``<'' symbol.
-
- /home/larry/papers# sort < items
- apples
- bananas
- carrots
- /home/larry/papers#
-
- Technically, sort < items is equivalent to sort items, but the former
- allows us to demonstrate the point: sort < items behaves as if the
- data in the file items was typed to standard input. The shell handles
- the redirection. sort wasn't given the name of the file (items) to
- read; as far as sort is concerned, it was still reading from standard
- input as if you had typed the data from your keyboard.
- This introduces the concept of a filter. A filter is a program
- which reads data from standard input, processes it in some way, and
- sends the processed data to standard output. Using redirection,
- standard input and/or standard output can be referenced from files.
- sort is a simple filter: it sorts the incoming data and sends the
- result to standard output. cat is even simpler: it doesn't do
- anything with the incoming data, it simply outputs whatever was given
- to it.
-
- 3.8.3 Using pipes
-
- We've already demonstrated how to use sort as a filter. However,
- these examples assumed that you had data in a file somewhere, or were
- willing to type the data to standard input yourself. What if the data
- you wanted to sort came from the output of another command, such as
- ls? For example, using the -r option with sort sorts the data in
- reverse-alphabetical order. If you wanted to list the files in your
- current directory in reverse order, one way to do it would be:
-
- /home/larry/papers# ls
- english-list
- 3.8. UNIX Plumbing 111
- _______________________________________________________________________
-
- history-final
- masters-thesis
- notes
- /home/larry/papers# ls > file-list
- /home/larry/papers# sort -r file-list
- notes
- masters-thesis
- history-final
- english-list
- /home/larry/papers#
-
- Here, we saved the output of ls in a file, and then ran sort -r on
- that file. But this is unwieldy and causes us to use a temporary file
- to save the data from ls.
- The solution is to use pipelining. Pipelining is another feature
- of the shell which allows you to connect a string of commands in a
- ``pipe'', where the stdout of the first command is sent directly to
- the stdin of the second command, and so on. Here, we wish to send the
- stdout of ls to the stdin of sort. The ``_'' symbol is used to create
- a pipe:
-
- /home/larry/papers# ls | sort -r
- notes
- masters-thesis
- history-final
- english-list
- /home/larry/papers#
-
- This command is much shorter, and obviously easier to type.
- Another useful example---using the command
-
- /home/larry/papers# ls /usr/bin
-
- is going to display a long list a files, most of which will fly past
- the screen too quickly for you to read them. Instead, let's use more
- to display the list of files in /usr/bin.
-
- /home/larry/papers# ls /usr/bin | more
-
- Now you can page down the list of files at your own leisure.
- But the fun doesn't stop here! We can pipe more than two commands
- together. The command head is a filter which displays the first
- lines from an input stream (here, input from a pipe). If we wanted
- to display the last filename in alphabetical order in the current
- directory, we can use:
-
- /home/larry/papers# ls | sort -r | head -1
- notes
- /home/larry/papers#
- 3.9. File Permissions 112
- _______________________________________________________________________
-
- where head -1 simply displays the first line of input that it receives
- (in this case, the stream of reverse-sorted data from ls).
-
- 3.8.4 Non-destructive redirection
-
- Using ``>'' to redirect output to a file is destructive: in other
- words, the command
-
- /home/larry/papers# ls > file-list
-
- overwrites the contents of the file file-list. If, instead, you
- redirect with the symbol ``>>'', the output will be appended to the
- named file, instead of overwriting it.
-
- /home/larry/papers# ls >> file-list
-
- will append the output of the ls command to file-list.
- Just keep in mind that redirection and using pipes are features
- provided by the shell---the shell provides this handy syntax using
- ``>'' and ``>>'' and ``_''. It has nothing to do with the commands
- themselves, but the shell.
-
-
- 3.9 File Permissions
-
- 3.9.1 Concepts of file permissions
-
- Because there are multiple users on a UNIX system, in order to protect
- individual user's files from tampering by other users, UNIX provides
- a mechanism known as file permissions. This mechanism allows files
- and directories to be ``owned'' by a particular user. As an example,
- because Larry created the files in his home directory, Larry owns
- those files, and has access to them.
- UNIX also allows files to be shared between users and groups of
- users. If Larry so desired, he could cut off access to his files,
- such that no other user could access them. However, on most systems
- the default is to allow other users to read your files, but not modify
- or delete them in any way.
- As explained above, every file is owned by a particular user.
- However, files are also owned by a particular group, which is a
- system-defined group of users. Every user is placed into at least one
- group when that user is created. However, the system administrator
- may also grant the user access to more than one group.
- Groups are usually defined by the type of users which access the
- machine. For example, on a university UNIX system, users may be
- placed into the groups student, staff, faculty or guest. There are
- also a few system-defined groups (such as bin and admin) which are
- used by the system itself to control access to resources---very rarely
- do actual users belong to these system groups.
- Permissions fall into three main divisions: read, write, and
- 3.9. File Permissions 113
- _______________________________________________________________________
-
- execute. These permissions may be granted to three classes of users:
- the owner of the file, the group to which the file belongs, and to all
- users, regardless of group.
- Read permission allows a user to read the contents of the file, or
- in the case of directories, to list the contents of the directory
- (using ls). Write permission allows the user to write to and modify
- the file. For directories, write permission allows the user to create
- new files or delete files within that directory. Finally, execute
- permission allows the user to run the file as a program or shell
- script (if the file happens to be a program or shell script, that is).
- For directories, having execute permission allows the user to cd into
- the directory in question.
-
- 3.9.2 Interpreting file permissions
-
- Let's look at an example to demonstrate file permissions. Using the
- ls command with the -l option will display a ``long'' listing of the
- file, including file permissions.
-
- /home/larry/foo# ls -l stuff
-
-
- -rw-r--r-- 1 larry users 505 Mar 13 19:05 stuff
-
-
- /home/larry/foo#
-
- The first field printed in the listing represents the file
- permissions. The third field is the owner of the file (larry), and
- the fourth field is the group to which the file belongs (users).
- Obviously, the last field is the name of the file (stuff), and we'll
- cover the other fields later.
- This file is owned by larry, and belongs to the group users. Let's
- look at the file permissions. The string -rw-r--r-- lists, in order,
- the permissions granted to the file's owner, the file's group, and
- everybody else.
- The first character of the permissions string (``-'') represents
- the type of file. A ``-'' just means that this is a regular
- file (as opposed to a directory or device driver). The next three
- letters (``rw-'') represent the permissions granted to the file's
- owner, larry. The ``r'' stands for ``read'' and the ``w'' stands for
- ``write''. Thus, larry has read and write permission to the file
- stuff.
- As we mentioned, besides read and write permission, there is also
- ``execute'' permission---represented by an ``x''. However, there is
- a ``-'' here in place of the ``x'', so Larry doesn't have execute
- permission on this file. This is fine, the file stuff isn't a program
- of any kind. Of course, because Larry owns the file, he may grant
- himself execute permission for the file if he so desires. This will
- be covered shortly.
- 3.9. File Permissions 114
- _______________________________________________________________________
-
- The next three characters, r--, represent the group's permissions
- on the file. The group which owns this file is users. Because only
- an ``r'' appears here, any user which belongs to the group users may
- read this file.
- The last three characters, also r--, represent the permissions
- granted to every other user on the system (other than the owner of the
- file and those in the group users). Again, because only an ``r'' is
- present, other users may read the file, but not write to it or execute
- it.
- Here are some other examples of group permissions.
-
- -rwxr-xr-x The owner of the file may read, write, and execute the
- file. Users in the file's group, and all other users, may
- read and execute the file.
-
- -rw------- The owner of the file may read and write the file. No
- other user can access the file.
- -rwxrwxrwx All users may read, write, and execute the file.
-
-
- 3.9.3 Dependencies
-
- It is important to note that the permissions granted to a file also
- depend on the permissions of the directory in which the file is
- located. For example, even if a file is set to -rwxrwxrwx, other
- users cannot access the file unless they have read and execute access
- to the directory in which the file is located. For example, if Larry
- wanted to restrict access to all of his files, he could simply set
- the permissions on his home directory /home/larry to -rwx------. In
- this way, no other user has access to his directory, and all files
- and directories within it. Larry doesn't need to worry about the
- individual permissions on each of his files.
- In other words, to access a file at all, you must have execute
- access to all directories along the file's pathname, and read (or
- execute) access to the file itself.
- Usually, users on a UNIX system are very open with their files.
- The usual set of permissions given to files is -rw-r--r--, which will
- allow other users to read the file, but not change it in any way. The
- usual set of permissions given to directories is -rwxr-xr-x, which
- will allow other users to look through your directories, but not
- create or delete files within them.
- However, many users wish to keep other users out of their files.
- Setting the permissions of a file to -rw------- will not allow any
- other user to access the file. Likewise, setting the permissions of a
- directory to -rwx------ will keep other users out of the directory in
- question.
- 3.10. Managing file links 115
- _______________________________________________________________________
-
- 3.9.4 Changing permissions
-
- The command chmod is used to set the permissions on a file. Only the
- owner of a file may change the permissions on that file. The syntax
- of chmod is:
-
- chmod {a,u,g,o}{+,-}{r,w,x} <filenames>
-
- Briefly, you supply one or more of all, user, group, or other.
- Then you specify whether you are adding rights (+) or taking them away
- (-). Finally, you specify one or more of read, write, and execute.
- Some examples of legal commands are:
-
- chmod a+r stuff
- Gives all users read access to the file.
-
- chmod +r stuff
- Same as above---if none of a, u, g, or o is specified, a
- is assumed.
-
- chmod og-x stuff
- Remove execute permission from users other than the owner.
-
- chmod u+rwx stuff
- Allow the owner of the file to read, write, and execute
- the file.
- chmod o-rwx stuff
- Remove read, write, and execute permission from users
- other than the owner and users in the file's group.
-
-
-
- 3.10 Managing file links
-
- Links allow you to give a single file multiple names. Files are
- actually identified to the system by their inode number, which is
- just the unique filesystem identifier for the file(3). A directory
- is actually a listing of inode numbers with their corresponding
- filenames. Each filename in a directory is a link to a particular
- inode.
-
- 3.10.1 Hard links
-
- The ln command is used to create multiple links for one file. For
- example, let's say that you have the file foo in a directory. Using
- ls -i, we can look at the inode number for this file.
-
- ----------------------------
- 3. The command ls -i will display file inode numbers.
- 3.10. Managing file links 116
- _______________________________________________________________________
-
- # ls -i foo
- 22192 foo
- #
-
- Here, the file foo has an inode number of 22192 in the filesystem. We
- can create another link to foo, named bar:
-
- # ln foo bar
-
- With ls -i, we see that the two files have the same inode.
-
- # ls -i foo bar
- 22192 bar 22192 foo
- #
-
- Now, accessing either foo or bar will access the same file. If you
- make changes to foo, those changes will be made to bar as well. For
- all purposes, foo and bar are the same file.
- These links are known as hard links because they directly create a
- link to an inode. Note that you can only hard-link files on the same
- filesystem; symbolic links (see below) don't have this restriction.
- When you delete a file with rm, you are actually only deleting one
- link to a file. If you use the command
-
- # rm foo
-
- then only the link named foo is deleted; bar will still exist. A file
- is only actually deleted on the system when it has no links to it.
- Usually, files have only one link, so using the rm command deletes the
- file. However, if a file has multiple links to it, using rm will only
- delete a single link; in order to delete the file, you must delete all
- links to the file.
- The command ls -l will display the number of links to a file (among
- other information).
-
- # ls -l foo bar
- -rw-r--r-- 2 root root 12 Aug 5 16:51 bar
- -rw-r--r-- 2 root root 12 Aug 5 16:50 foo
- #
-
- The second column in the listing, ``2'', specifies the number of links
- to the file.
- As it turns out, a directory is actually just a file containing
- information about link-to-inode translations. Also, every directory
- has at least two hard links in it: ``.'' (a link pointing to
- itself), and ``..'' (a link pointing to the parent directory). The
- root directory (/) ``..'' link just points back to /.
- 3.11. Job Control 117
- _______________________________________________________________________
-
- 3.10.2 Symbolic links
-
- Symbolic links are another type of link, which are somewhat different
- than hard links. A symbolic link allows you to give a file another
- name, but it doesn't link the file by inode.
- The command ln -s will create a symbolic link to a file. For
- example, if we use the command
-
- # ln -s foo bar
-
- we will create the symbolic link bar pointing to the file foo. If
- we use ls -i, we will see that the two files have different inodes,
- indeed.
-
- # ls -i foo bar
- 22195 bar 22192 foo
- #
-
- However, using ls -l, we see that the file bar is a symlink pointing
- to foo.
-
- # ls -l foo bar
- lrwxrwxrwx 1 root root 3 Aug 5 16:51 bar -> foo
- -rw-r--r-- 1 root root 12 Aug 5 16:50 foo
- #
-
- The permission bits on a symbolic link are not used (they always
- appear as rwxrwxrwx). Instead, the permissions on the symbolic link
- are determined by the permissions on the target of the symbolic link
- (in our example, the file foo).
- Functionally, hard links and symbolic links are similar, but there
- are some differences. For one thing, you can create a symbolic link
- to a file which doesn't exist; the same is not true for hard links.
- Symbolic links are processed by the kernel differently than hard links
- are, which is just a technical difference but sometimes an important
- one. Symbolic links are helpful because they identify what file they
- point to; with hard links, there is no easy way to determine which
- files are linked to the same inode.
- Links are used in many places on the Linux system. Symbolic links
- are especially important to the shared library images in /lib. See
- Section 4.7.2 for more information.
-
-
- 3.11 Job Control
-
- 3.11.1 Jobs and processes
-
- Job control is a feature provided by many shells (Bash and Tcsh
- included) which allows you to control multiple running commands, or
- 3.11. Job Control 118
- _______________________________________________________________________
-
- jobs, at once. Before we can delve much further, we need to talk
- about processes.
- Every time you run a program, you start what is known as a
- process---which is just a fancy name for a running program. The
- command ps displays a list of currently running processes. Here's an
- example:
-
- /home/larry# ps
-
-
- PID TT STAT TIME COMMAND
- 24 3 S 0:03 (bash)
- 161 3 R 0:00 ps
-
-
- /home/larry#
-
- The PID listed in the first column is the process ID, a unique
- number given to every running process. The last column, COMMAND,
- is the name of the running command. Here, we're only looking at
- the processes which Larry is currently running(4). These are bash
- (Larry's shell), and the ps command itself. As you can see, bash is
- running concurrently with the ps command. bash executed ps when Larry
- typed the command. After ps is finished running (after the table
- of processes is displayed), control is returned to the bash process,
- which displays the prompt, ready for another command.
- A running process is known as a job to the shell. The terms
- process and job are interchangeable. However, a process is usually
- referred to as a ``job'' when used in conjunction with job control---a
- feature of the shell which allows you to switch between several
- independent jobs.
- In most cases users are only running a single job at a time---that
- being whatever command they last typed to the shell. However, using
- job control, you can run several jobs at once, switching between them
- as needed. How might this be useful? Let's say that you're editing a
- text file and need to suddenly interrupt your editing and do something
- else. With job control, you can temporarily suspend the editor, and
- back at the shell prompt start to work on something else. When you're
- done, you can start the editor back up, and be back where you started,
- as if you never left the editor. This is just one example. There are
- many practical uses for job control.
-
- 3.11.2 Foreground and background
-
- Jobs can either be in the foreground or in the background. There can
- only be one job in the foreground at any one time. The foreground
-
- ----------------------------
- 4. There are many other processes running on the system as
- well---``ps -aux'' lists them all.
- 3.11. Job Control 119
- _______________________________________________________________________
-
- job is the job which you interact with---it receives input from the
- keyboard and sends output to your screen. (Unless, of course, you
- have redirected input or output, as described in Section 3.8). On
- the other hand, jobs in the background do not receive input from
- the terminal---in general, they run along quietly without need for
- interaction.
- Some jobs take a long time to finish, and don't do anything
- interesting while they are running. Compiling programs is one such
- job, as is compressing a large file. There's no reason why you should
- sit around being bored while these jobs complete their tasks; you can
- just run them in the background. While the jobs are running in the
- background, you are free to run other programs.
- Jobs may also be suspended. A suspended job is a job that is
- not currently running, but is temporarily stopped. After you suspend
- a job, you can tell the job to continue, in the foreground or the
- background as needed. Resuming a suspended job will not change the
- state of the job in any way---the job will continue to run where it
- left off.
- Note that suspending a job is not equal to interrupting a job.
- When you interrupt a running process (by hitting your interrupt key,
- which is usually [ctrl-C])(5), it kills the process, for good. Once
- the job is killed, there's no hope of resuming it; you'll have to
- re-run the command. Also note that some programs trap the interrupt,
- so that hitting [ctrl-C] won't immediately kill the job. This is to
- allow the program to perform any necessary cleanup operations before
- exiting. In fact, some programs simply don't allow you to kill them
- with an interrupt at all.
-
- 3.11.3 Backgrounding and killing jobs
-
- Let's begin with a simple example. The command yes is a seemingly
- useless command which sends an endless stream of y's to standard
- output. (This is actually useful. If you piped the output of yes
- to another command which asked a series of yes and no questions, the
- stream of y's would confirm all of the questions.)
- Try it out.
-
- /home/larry# yes
- y
- y
- y
- y
- y
-
-
- ----------------------------
- 5. The interrupt key can be set using the stty command. The default
- on most systems is [ctrl-C], but we can't guarantee the same for your
- system.
- 3.11. Job Control 120
- _______________________________________________________________________
-
- The y's will continue ad infinitum. You can kill the process by
- hitting your interrupt key, which is usually [ctrl-C]. So that we
- don't have to put up with the annoying stream of y's, let's redirect
- the standard output of yes to /dev/null. As you may remember,
- /dev/null acts as a ``black hole'' for data. Any data sent to it will
- disappear. This is a very effective method of quieting an otherwise
- verbose program.
-
- /home/larry# yes > /dev/null
-
- Ah, much better. Nothing is printed, but the shell prompt doesn't
- come back. This is because yes is still running, and is sending those
- inane y's to /dev/null. Again, to kill the job, hit the interrupt
- key.
- Let's suppose that we wanted the yes command to continue to run,
- but wanted to get our shell prompt back to work on other things. We
- can put yes into the background, which will allow it to run, but
- without need for interaction.
- One way to put a process in the background is to append an ``&''
- character to the end of the command.
-
- /home/larry# yes > /dev/null &
- [1] 164
- /home/larry#
-
- As you can see, we have our shell prompt back. But what is this
- ``[1] 164''? And is the yes command really running?
- The ``[1]'' represents the job number for the yes process. The
- shell assigns a job number to every running job. Because yes is the
- one and only job that we're currently running, it is assigned job
- number 1. The ``164'' is the process ID, or PID, number given by the
- system to the job. Either number may be used to refer to the job, as
- we'll see later.
- You now have the yes process running in the background,
- continuously sending a stream of y's to /dev/null. To check on the
- status of this process, use the shell internal command jobs.
-
- /home/larry# jobs
- [1]+ Running yes >/dev/null &
- /home/larry#
-
- Sure enough, there it is. You could also use the ps command as
- demonstrated above to check on the status of the job.
- To terminate the job, use the command kill. This command takes
- either a job number or a process ID number as an argument. This was
- job number 1, so using the command
-
- /home/larry# kill %1
-
- will kill the job. When identifying the job with the job number, you
- 3.11. Job Control 121
- _______________________________________________________________________
-
- must prefix the number with a percent (``%'') character.
- Now that we've killed the job, we can use jobs again to check on
- it:
-
- /home/larry# jobs
-
-
- [1]+ Terminated yes >/dev/null
-
-
- /home/larry#
-
- The job is in fact dead, and if we use the jobs command again nothing
- should be printed.
- You can also kill the job using the process ID (PID) number, which
- is printed along with the job ID when you start the job. In our
- example, the process ID is 164, so the command
-
- /home/larry# kill 164
-
- is equivalent to
-
- /home/larry# kill %1
-
- You don't need to use the ``%'' when referring to a job by its process
- ID.
-
- 3.11.4 Stopping and restarting jobs
-
- There is another way to put a job into the background. You can start
- the job normally (in the foreground), stop the job, and then restart
- it in the background.
- First, start the yes process in the foreground, as you normally
- would:
-
- /home/larry# yes > /dev/null
-
- Again, because yes is running in the foreground, you shouldn't get
- your shell prompt back.
- Now, instead of interrupting the job with [ctrl-C], we'll suspend
- the job. Suspending a job doesn't kill it: it only temporarily stops
- the job until you restart it. To do this, you hit the suspend key,
- which is usually [ctrl-Z].
-
- /home/larry# yes > /dev/null
- [ctrl-Z]
- [1]+ Stopped yes >/dev/null
- /home/larry#
-
- While the job is suspended, it's simply not running. No CPU time is
- 3.11. Job Control 122
- _______________________________________________________________________
-
- used for the job. However, you can restart the job, which will cause
- the job to run again as if nothing ever happened. It will continue to
- run where it left off.
- To restart the job in the foreground, use the command fg (for
- ``foreground'').
-
- /home/larry# fg
- yes >/dev/null
-
- The shell prints the name of the command again so you're aware of
- which job you just put into the foreground. Stop the job again,
- with [ctrl-Z]. This time, use the command bg to put the job into the
- background. This will cause the command to run just as if you started
- the command with ``&'' as in the last section.
-
- /home/larry# bg
- [1]+ yes >/dev/null &
- /home/larry#
-
- And we have our prompt back. jobs should report that yes is indeed
- running, and we can kill the job with kill as we did before.
- How can we stop the job again? Using [ctrl-Z] won't work, because
- the job is in the background. The answer is to put the job in the
- foreground, with fg, and then stop it. As it turns out you can use fg
- on either stopped jobs or jobs in the background.
- There is a big difference between a job in the background and a
- job which is stopped. A stopped job is not running---it's not using
- any CPU time, and it's not doing any work (the job still occupies
- system memory, although it may be swapped out to disk). A job in the
- background is running, and using memory, as well as completing some
- task while you do other work. However, a job in the background may
- try to display text on to your terminal, which can be annoying if
- you're trying to work on something else. For example, if you used the
- command
-
- /home/larry# yes &
-
- without redirecting stdout to /dev/null, a stream of y's would be
- printed to your screen, without any way of interrupting it (you can't
- use [ctrl-C] to interrupt jobs in the background). In order to stop
- the endless y's, you'd have to use the fg command, to bring the job to
- the foreground, and then use [ctrl-C] to kill it.
- Another note. The fg and bg commands normally foreground or
- background the job which was last stopped (indicated by a ``+'' next
- to the job number when you use the command jobs). If you are running
- multiple jobs at once, you can foreground or background a specific job
- by giving the job ID as an argument to fg or bg, as in
-
- /home/larry# fg %2
- 3.12. Using the vi Editor 123
- _______________________________________________________________________
-
- (to foreground job number 2), or
-
- /home/larry# bg %3
-
- (to background job number 3). You can't use process ID numbers with
- fg or bg.
- Furthermore, using the job number alone, as in
-
- /home/larry# %2
-
- is equivalent to
-
- /home/larry# fg %2
-
- Just remember that using job control is a feature of the shell.
- The commands fg, bg and jobs are internal to the shell. If for some
- reason you use a shell which does not support job control, don't
- expect to find these commands available.
- In addition, there are some aspects of job control which differ
- between Bash and Tcsh. In fact, some shells don't provide job control
- at all---however, most shells available for Linux support job control.
-
-
- 3.12 Using the vi Editor
-
- A text editor is simply a program used to edit files which contain
- text, such as a letter, C program, or a system configuration file.
- While there are many such editors available for Linux, the only editor
- which you are guaranteed to find on any UNIX system is vi--- the
- ``visual editor''. vi is not the easiest editor to use, nor is it
- very self-explanatory. However, because it is so common in the UNIX
- world, and at times you may be required to use it, it deserves some
- documentation here.
- Your choice of an editor is mostly a question of personal taste and
- style. Many users prefer the baroque, self-explanatory and powerful
- Emacs---an editor with more features than any other single program in
- the UNIX world. For example, Emacs has its own built-in dialect of
- the LISP programming language, and has many extensions (one of which
- is an ``Eliza''-like AI program). However, because Emacs and all of
- its support files are relatively large, you may not have access to
- it on many systems. vi, on the other hand, is small and powerful,
- but more difficult to use. However, once you know your way around
- vi, it's actually very easy. It's just the learning curve which is
- sometimes difficult to cross.
- This section is a coherent introduction to vi---we won't discuss
- all of its features, just the ones you need to know to get you
- started. You can refer to the man page for vi if you're interested
- in learning about more of this editor's features. Or, you can read
- the book Learning the vi Editor from O'Reilly and Associates. See
- Appendix A for information.
- 3.12. Using the vi Editor 124
- _______________________________________________________________________
-
- 3.12.1 Concepts
-
- While using vi, at any one time you are in one of three modes of
- operation. These modes are known as command mode, insert mode, and
- last line mode.
- When you start up vi, you are in command mode. This mode allows
- you to use certain commands to edit files or to change to other modes.
- For example, typing ``x'' while in command mode deletes the character
- underneath the cursor. The arrow keys move the cursor around the file
- which you're editing. Generally, the commands used in command mode
- are one or two characters long.
- You actually insert or edit text within insert mode. When using
- vi, you'll probably spend most of your time within this mode. You
- start insert mode by using a command such as ``i'' (for ``insert'')
- from command mode. While in insert mode, you are inserting text into
- the document from your current cursor location. To end insert mode
- and return to command mode, press [esc].
- Last line mode is a special mode used to give certain extended
- commands to vi. While typing these commands, they appear on the last
- line of the screen (hence the name). For example, when you type ``:''
- from command mode, you jump into last line mode, and can use commands
- such as ``wq'' (to write the file and quit vi), or ``q!'' (to quit
- vi without saving changes). Last line mode is generally used for vi
- commands which are longer than one character. In last line mode, you
- enter a single-line command and press [enter] to execute it.
-
- 3.12.2 Starting vi
-
- The best way to understand these concepts is to actually fire up vi
- and edit a file. In the example ``screens'' below, we're only going
- to show a few lines of text, as if the screen was only six lines high
- (instead of twenty-four).
- The syntax for vi is
-
- vi <filename>
-
- where <filename> is the name of the file that you wish to edit.
- Start up vi by typing
-
- /home/larry# vi test
-
- which will edit the file test. You should see something like
-
- ____________________________________________________________________
- |~_ |
- |~ |
- |~ |
- |~ |
- |~ |
- |"test"_[New_file]__________________________________________________|
-
- 3.12. Using the vi Editor 125
- _______________________________________________________________________
-
- The column of ``~'' characters indicates that you are the end of
- the file.
-
- 3.12.3 Inserting text
-
- You are now in command mode; in order to insert text into the file,
- press [i] (which will place you into insert mode), and begin typing.
-
- ____________________________________________________________________
- |Now is the time for all good men to come to the aid of the party._ |
- |~ |
- |~ |
- |~ |
- |~ |
- |~__________________________________________________________________|
-
- While inserting text, you may type as many lines as you wish
- (pressing [return] after each, of course), and you may correct
- mistakes using the backspace key.
- To end insert mode, and return to command mode, press [esc].
- While in command mode, you can use the arrow keys to move around
- the file. Here, because we only have one line of text, trying to use
- the up- or down-arrow keys will probably cause vi to beep at you.
- There are several ways to insert text, other than using the i
- command. For example, the a command inserts text beginning after the
- current cursor position, instead of on the current cursor position.
- For example, use the left arrow key to move the cursor between the
- words ``good'' and ``men''.
-
- ____________________________________________________________________
- |Now is the time for all good_men to come to the aid of the party. |
- |~ |
- |~ |
- |~ |
- |~ |
- |~__________________________________________________________________|
-
- Press [a], to start insert mode, type ``wo'', and then hit [esc] to
- return to command mode.
-
- ____________________________________________________________________
- |Now is the time for all good women to come to the aid of the party.|
- |~ |
- |~ |
- |~ |
- |~ |
- |~__________________________________________________________________|
-
- To begin inserting text at the line below the current one, use the
- o command. For example, press [o] and type another line or two:
- 3.12. Using the vi Editor 126
- _______________________________________________________________________
-
- ____________________________________________________________________
- |Now is the time for all good women to come to the aid of the party.|
- |Afterwards, we'll go out for pizza and beer._ |
- |~ |
- |~ |
- |~ |
- |~__________________________________________________________________|
-
- Just remember that at any time you're either in command mode
- (where commands such as i, a, or o are valid), or in insert mode
- (where you're inserting text, followed by [esc] to return to command
- mode), or last line mode (where you're entering extended commands, as
- discussed below).
-
- 3.12.4 Deleting text
-
- From command mode, the x command deletes the character under the
- cursor. If you press [x] five times, you'll end up with:
-
- ____________________________________________________________________
- |Now is the time for all good women to come to the aid of the party.|
- |Afterwards, we'll go out for pizza and _ |
- |~ |
- |~ |
- |~ |
- |~__________________________________________________________________|
-
- Now press [a], insert some text, followed by [esc]:
- ____________________________________________________________________
- |Now is the time for all good women to come to the aid of the party.|
- |Afterwards, we'll go out for pizza and Diet Coke._ |
- |~ |
- |~ |
- |~ |
- |~__________________________________________________________________|
-
- You can delete entire lines using the command dd (that is, press
- [d] twice in a row). If your cursor is on the second line, and you
- type dd,
- ____________________________________________________________________
- |Now is the time for all good women to come to the aid of the party.|
- |~ |
- |~ |
- |~ |
- |~ |
- |~__________________________________________________________________|
- 3.12. Using the vi Editor 127
- _______________________________________________________________________
-
- To delete the word which the cursor is on, use the dw command.
- Place the cursor on the word ``good'', and type dw.
- ____________________________________________________________________
- |Now is the time for all women to come to the aid of the party. |
- |~ |
- |~ |
- |~ |
- |~ |
- |~__________________________________________________________________|
-
- 3.12.5 Changing text
-
- You can replace sections of text using the R command. Place the
- cursor on the first letter in ``party'', press [R], and type the word
- ``hungry''.
-
- ____________________________________________________________________
- |Now is the time for all women to come to the aid of the hungry._ |
- |~ |
- |~ |
- |~ |
- |~ |
- |~__________________________________________________________________|
-
- Using R to edit text is much like the i and a commands, but R
- overwrites text, instead of inserting it.
- The r command replaces the single character under the cursor. For
- example, move the cursor to the beginning of the word ``Now'', and
- type r followed by C, you'll have:
-
- ____________________________________________________________________
- |Cow is the time for all women to come to the aid of the hungry._ |
- |~ |
- |~ |
- |~ |
- |~ |
- |~__________________________________________________________________|
-
- The ``~'' command changes the case of the letter under the cursor
- from upper- to lower-case, and vise versa, For example, if you place
- the cursor on the ``o'' in ``Cow'', above, and repeatedly press [~],
- you'll end up with:
- 3.12. Using the vi Editor 128
- _______________________________________________________________________
-
- ____________________________________________________________________
- |COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY. |
- |~ |
- |~ |
- |~ |
- |~ |
- |~__________________________________________________________________|
-
- 3.12.6 Moving commands
-
- You already know how to use the arrow keys to move around the
- document. In addition, you can use the h, j, k, and l commands
- to move the cursor left, down, up, and right, respectively. This
- comes in handy when (for some reason) your arrow keys aren't working
- correctly.
- The w command moves the cursor to the beginning of the next word;
- the b moves it to the beginning of the previous word.
- The 0 (that's a zero) command moves the cursor to the beginning of
- the current line, and the $ command moves it to the end of the line.
- When editing large files, you'll want to move forwards or backwards
- through the file a screenful at a time. Pressing [ctrl-F] moves the
- cursor one screenful forward, and [ctrl-B] moves it a screenful back.
- In order to move the cursor to the end of the file, type G. You
- can also move to an arbitrary line; for example, typing the command
- 10G would move the cursor to line 10 in the file. To move to the
- beginning of the file, use 1G.
- You can couple moving commands with other commands, such as
- deletion. For example, the command d$ will delete everything from the
- cursor to the end of the line; dG will delete everything from the
- cursor to the end of the file, and so on.
-
- 3.12.7 Saving files and quitting vi
-
- To quit vi without making changes to the file, use the command :q!.
- When you type the ``:'', the cursor will move to the last line on the
- screen; you'll be in last line mode.
-
- ____________________________________________________________________
- |COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY. |
- |~ |
- |~ |
- |~ |
- |~ |
- |~ |
- |:__________________________________________________________________|
-
- In last line mode, certain extended commands are available. One of
- them is q!, which quits vi without saving. The command :wq saves the
- file and then exits vi. The command ZZ (from command mode, without
- 3.12. Using the vi Editor 129
- _______________________________________________________________________
-
- the ``:'') is equivalent to :wq. Remember that you must press
- [enter] after a command entered in last line mode.
- To save the file without quitting vi, just use :w.
-
- 3.12.8 Editing another file
-
- To edit another file, use the :e command. For example, to stop
- editing test, and edit the file foo instead, use the command
-
- ____________________________________________________________________
- |COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY. |
- |~ |
- |~ |
- |~ |
- |~ |
- |~ |
- |:e foo_____________________________________________________________|
-
- If you use :e without saving the file first, you'll get the error
- message
- ____________________________________________________________________
- |No_write_since_last_change_(":edit!"_overrides)____________________|
-
- which simply means that vi doesn't want to edit another file until
- you save the first one. At this point, you can use :w to save the
- original file, and then use :e, or you can use the command
- ____________________________________________________________________
- |COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY. |
- |~ |
- |~ |
- |~ |
- |~ |
- |~ |
- |:e! foo_____________________________________________________________|
-
- The ``!'' tells vi that you really mean it---edit the new file
- without saving changes to the first.
-
-
- 3.12.9 Including other files
-
- If you use the :r command, you can include the contents of another
- file in the current file. For example, the command
-
- :r foo.txt
-
- would insert the contents of the file foo.txt in the text at the
- current cursor location.
- 3.13. Customizing your Environment 130
- _______________________________________________________________________
-
- 3.12.10 Running shell commands
-
- You can also run shell commands from within vi. The :r! command
- works like :r, but instead of reading a file, it inserts the output of
- the given command into the buffer at the current cursor location. For
- example, if you use the command
-
- :r! ls -F
-
- you'll end up with
-
- ____________________________________________________________________
- |COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY. |
- |letters/ |
- |misc/ |
- |papers/_ |
- |~ |
- |~__________________________________________________________________|
-
- You can also ``shell out'' of vi, in other words, run a command
- from within vi, and return to the editor when you're done. For
- example, if you use the command
-
- :! ls -F
-
- the ls -F command will be executed, and the results displayed on the
- screen, but not inserted into the file which you're editing. If you
- use the command
-
- :shell
-
- vi will start an instance of the shell, allowing you to temporarily
- put vi ``on hold'' while you execute other commands. Just logout of
- the shell (using the exit command) to return to vi.
-
- 3.12.11 Getting help
-
- vi doesn't provide much in the way of interactive help (most UNIX
- programs don't), but you can always read the man page for vi. vi is a
- visual front-end to the ex editor; it is ex which handles many of the
- last-line mode commands in vi. So, in addition to reading the man
- page for vi, see ex as well.
-
-
- 3.13 Customizing your Environment
-
- The shell provides many mechanisms to customize your work environment.
- As we've mentioned before, the shell is more than a command
- interpreter---it is also a powerful programming language. While
- writing shell scripts is an extensive subject, we'd like to introduce
- 3.13. Customizing your Environment 131
- _______________________________________________________________________
-
- you to some of the ways that you can simplify your work on a UNIX
- system by using these advanced features of the shell.
- As we have mentioned before, different shells use different
- syntaxes when executing shell scripts. For example, Tcsh uses a
- C-like syntax, while Bourne shells use another type of syntax. In
- this section, we won't be running into many of the differences between
- the two, but we will assume that shell scripts are executed using the
- Bourne shell syntax.
-
- 3.13.1 Shell scripts
-
- Let's say that you use a series of commands often, and would like to
- shorten the amount of required typing by grouping all of them together
- into a single ``command''. For example, the commands
-
- /home/larry# cat chapter1 chapter2 chapter3 > book
- /home/larry# wc -l book
- /home/larry# lp book
-
- would concatenate the files chapter1, chapter2, and chapter3 and place
- the result in the file book. Then, a count of the number of lines in
- book would be displayed, and finally book would be printed with the lp
- command.
- Instead of typing all of these commands, you could group them into
- a shell script. We described shell scripts briefly in Section 3.13.1.
- The shell script used to run all of these commands would look like
-
- #!/bin/sh
- # A shell script to create and print the book
-
- cat chapter1 chapter2 chapter3 > book
- wc -l book
- lp book
-
- If this script was saved in the file makebook, you could simply use
- the command
-
- /home/larry# makebook
-
- to run all of the commands in the script. Shell scripts are just
- plain text files; you can create them with an editor such as emacs or
- vi (6).
- Let's look at this shell script. The first line, ``#!/bin/sh'',
- identifies the file as a shell script, and tells the shell how to
- execute the script. It instructs the shell to pass the script to
- /bin/sh for execution, where /bin/sh is the shell program itself.
- Why is this important? On most UNIX systems, /bin/sh is a
-
- ----------------------------
- 6. vi is covered in Section 3.12.
- 3.13. Customizing your Environment 132
- _______________________________________________________________________
-
- Bourne-type shell, such as Bash. By forcing the shell script to
- run using /bin/sh, we are ensuring that the script will run under a
- Bourne-syntax shell (instead of, say, a C shell). This will cause
- your script to run using the Bourne syntax even if you use Tcsh (or
- another C shell) as your login shell.
- The second line is a comment. Comments begin with the character
- ``#'' and continue to the end of the line. Comments are ignored by
- the shell---they are commonly used to identify the shell script to the
- programmer.
- The rest of the lines in the script are just commands, as you would
- type them to the shell directly. In effect, the shell reads each line
- of the script and runs that line as if you had typed it at the shell
- prompt.
- Permissions are important for shell scripts. If you create a shell
- script, you must make sure that you have execute permission on the
- script in order to run it(7). The command
-
- /home/larry# chmod u+x makebook
-
- can be used to give yourself execute permission on the shell script
- makebook.
-
- 3.13.2 Shell variables and the environment
-
- The shell allows you to define variables, as most programming
- languages do. A variable is just a piece of data which is given the
- name.
- ! Note that Tcsh, as well as other C-type shells, use a different
- mechanism for setting variables than is described here. This
- discussion assumes the use of a Bourne shell, such as Bash (which
- you're probably using). See the Tcsh man page for details.
- When you assign a value to a variable (using the ``='' operator),
- you can access the variable by prepending a ``$'' to the variable
- name, as demonstrated below.
-
- /home/larry# foo=``hello there''
-
- The variable foo is given the value ``hello there''. You can now
- refer to this value by the variable name, prefixed with a ``$''
- character. The command
-
- /home/larry# echo $foo
- hello there
- /home/larry#
-
- produces the same results as
-
- ----------------------------
- 7. When you create text files, the default permissions usually don't
- include execute permission.
- 3.13. Customizing your Environment 133
- _______________________________________________________________________
-
- /home/larry# echo ``hello there''
- hello there
- /home/larry#
-
- These variables are internal to the shell. This means that only
- the shell can access these variables. This can be useful in shell
- scripts; if you need to keep track of a filename, for example, you can
- store it in a variable, as above. Using the command set will display
- a list of all defined shell variables.
- However, the shell allows you to export variables to the
- environment. The environment is the set of variables which all
- commands that you execute have access to. Once you define a variable
- inside the shell, exporting it makes that variable part of the
- environment as well. The export command is used to export a variable
- to the environment.
- ! Again, here we differ between Bash and Tcsh. If you're using Tcsh,
- another syntax is used for setting environment variables (the setenv
- command is used). See the Tcsh man page for more information.
- The environment is very important to the UNIX system. It allows
- you to configure certain commands just by setting variables which the
- commands know about.
- Here's a quick example. The environment variable PAGER is used by
- the man command. It specifies the command to use to display man
- pages one screenful at a time. If you set PAGER to be the name of a
- command, it will use that command to display the man pages, instead of
- more (which is the default).
- Set PAGER to ``cat''. This will cause output from man to be
- displayed to the screen all at once, without breaking it up into
- pages.
-
- /home/larry# PAGER=``cat''
-
- Now, export PAGER to the environment.
-
- /home/larry# export PAGER
-
- Try the command man ls. The man page should fly past your screen
- without pausing for you.
- Now, if we set PAGER to ``more'', the more command will be used to
- display the man page.
-
- /home/larry# PAGER=``more''
-
- Note that we don't have to use the export command after we change
- the value of PAGER. We only need to export a variable once; any
- changes made to it thereafter will automatically be propagated to the
- environment.
- The man pages for a particular command will tell you if the command
- uses any environment variables; for example, the man man page explains
- that PAGER is used to specify the pager command. Some commands
- 3.13. Customizing your Environment 134
- _______________________________________________________________________
-
- share environment variables; for example, many commands use the EDITOR
- environment variable to specify the default editor to use when one is
- needed.
- The environment is also used to keep track of important information
- about your login session. An example is the HOME environment
- variable, which contains the name of your home directory.
-
- /home/larry/papers# echo $HOME
- /home/larry
-
- Another interesting environment variable is PS1, which defines the
- main shell prompt. For example,
-
- /home/larry# PS1=``Your command, please: ''
- Your command, please:
-
- To set the prompt back to our usual (which contains the current
- working directory followed by a ``#'' symbol),
-
- Your command, please: PS1=``\w# ''
- /home/larry#
-
- The bash man page describes the syntax used for setting the prompt.
-
- 3.13.2.1 The PATH environment variable
-
- When you use the ls command, how does the shell find the ls executable
- itself? In fact, ls is found in /bin/ls on most systems. The shell
- uses the environment variable PATH to locate executable files for
- commands which you type.
- For example, your PATH variable may be set to:
-
- /bin:/usr/bin:/usr/local/bin:.
-
- This is a list of directories for the shell to search, each directory
- separated by a ``:''. When you use the command ls, the shell first
- looks for /bin/ls, then /usr/bin/ls, and so on.
- Note that the PATH has nothing to do with finding regular files.
- For example, if you use the command
-
- /home/larry# cp foo bar
-
- The shell does not use PATH to locate the files foo and bar---those
- filenames are assumed to be complete. The shell only uses PATH to
- locate the cp executable.
- This saves you a lot of time; it means that you don't have to
- remember where all of the command executables are stored. On many
- systems, executables are scattered about in many places, such as
- /usr/bin, /bin, or /usr/local/bin. Instead of giving the command's
- full pathname (such as /usr/bin/cp), you can simply set PATH to the
- 3.14. So You Want to Strike Out on Your Own? 135
- _______________________________________________________________________
-
- list of directories that you want the shell to automatically search.
- Notice that PATH contains ``.'', which is the current working
- directory. This allows you to create a shell script or program and
- run it as a command from your current directory, without having to
- specify it directly (as in ./makebook). If a directory isn't on your
- PATH, then the shell will not search it for commands to run---this
- includes the current directory.
-
- 3.13.3 Shell initialization scripts
-
- In addition to shell scripts that you create, there are a number
- of scripts that the shell itself uses for certain purposes. The
- most important of these are your initialization scripts, scripts
- automatically executed by the shell when you login.
- The initialization scripts themselves are simply shell scripts, as
- described above. However, they are very useful in setting up your
- environment by executing commands automatically when you login. For
- example, if you always use the mail command to check your mail when
- you login, you place the command in your initialization script so it
- will be executed automatically.
- Both Bash and Tcsh distinguish between a login shell and other
- invocations of the shell. A login shell is a shell invoked at login
- time; usually, it's the only shell which you'll use. However, if
- you ``shell out'' of another program, such as vi, you start another
- instance of the shell, which isn't your login shell. In addition,
- whenever you run a shell script, you automatically start another
- instance of the shell to execute the script.
- The initialization files used by Bash are: /etc/profile (set up
- by the system administrator, executed by all Bash users at login
- time), $HOME/.bash_profile (executed by a login Bash session), and
- $HOME/.bashrc (executed by all non-login instances of Bash). If
- .bash_profile is not present, .profile is used instead.
- Tcsh uses the following initialization scripts: /etc/csh.login
- (executed by all Tcsh users at login time), $HOME/.tcshrc (executed
- a login time and by all new instances of Tcsh), and $HOME/.login
- (executed at login time, following .tcshrc). If .tcshrc is not
- present, .cshrc is used instead.
- To fully understand the function of these files, you'll need to
- learn more about the shell itself. Shell programming is a complicated
- subject, far beyond the scope of this book. See the man pages
- for bash and/or tcsh to learn more about customizing your shell
- environment.
-
-
- 3.14 So You Want to Strike Out on Your Own?
-
- Hopefully we have provided enough information to give you a basic idea
- of how to use the system. Keep in mind that most of the interesting
- and important aspects of Linux aren't covered here---these are the
- very basics. With this foundation, before long you'll be up and
- 3.14. So You Want to Strike Out on Your Own? 136
- _______________________________________________________________________
-
- running complicated applications and fulfilling the potential of your
- system. If things don't seem exciting at first, don't despair---there
- is much to be learned.
- One indispensable tool for learning about the system is to read
- the man pages. While many of the man pages may appear confusing at
- first, if you dig beneath the surface there is a wealth of information
- contained therein.
- We also suggest reading a complete book on using a UNIX system.
- There is much more to UNIX than meets the eye---unfortunately, most of
- it is beyond the scope of this book. Some good UNIX books to look at
- are listed in Appendix A.
-
-
-
-
-
-
-
-
- Chapter 4
-
-
-
-
- System Administration
-
-
-
- This chapter is an overview to Linux system administration, including
- a number of advanced features which aren't necessarily for system
- administrators only. Just as every dog has its day, every system
- has its administrator, and running the system is a very important and
- sometimes time-consuming job, even if you're the only user on your
- system.
- We have tried to cover here the most important things about system
- administration you need to know when you use Linux, in sufficient
- detail to get you comfortably started. In order to keep it short and
- sweet, we have only covered the very basics, and have skipped many an
- important detail. You should read the Linux System Administrator's
- Guide if you are serious about running Linux. It will help you
- understand better how things work, and how they hang together. At
- least skim through it so that you know what it contains and know what
- kind of help you can expect from it.
-
- 4.1 About Root, Hats, and the Feeling of Power
-
- As you know, UNIX differentiates between different users, so that
- what they do to each other and to the system can be regulated (one
- wouldn't want anybody to be able to read one's love letters, for
- instance). Each user is given an account, which includes a username,
- home directory, and so on. In addition to accounts given to real
- people, there are special system-defined accounts which have special
- privileges. The most important of these is the root account, for the
- username root.
-
-
- 4.1.1 The root account
-
- Ordinary users are generally restricted so that they can't do harm to
- anybody else on the system, just to themselves. File permissions
- on the system are arranged such that normal users aren't allowed to
- delete or modify files in directories shared by all users (such as
- /bin and /usr/bin. Most users also protect their own files with
- the appropriate file permissions so that other users can't access or
-
- 137
- 4.1. About Root, Hats, and the Feeling of Power 138
- _______________________________________________________________________
-
- modify those files.
- There are no such restrictions on root. The user root can read,
- modify, or delete any file on the system, change permissions and
- ownerships on any file, and run special programs, such as those which
- partition the drive or create filesystems. The basic idea is that the
- person or persons who run and take care of the system logs in as root
- whenever it is necessary to perform tasks that cannot be executed as
- a normal user. Because root can do anything, it is easy to make
- mistakes that have catastrophic consequences when logged in using this
- account.
- For example, as a normal user, if you inadvertently attempt to
- delete all of the files in /etc, the system will not permit you to do
- so. However, when logged in as root, the system won't complain at
- all. It is very easy to trash your system when using root. The best
- way to prevent accidents is to:
-
- o Sit on your hands before you press [return] on a command which
- may cause damage. For example, if you're about to clean out a
- directory, before hitting [return], re-read the entire command and
- make sure that it is correct.
-
- o Don't get accustomed to using root. The more comfortable you are
- in the role of the root user, the more likely you are to confuse
- your privileges with those of a normal user. For example, you
- might think that you're logged in as larry, when you're really
- logged in as root.
-
- o Use a different prompt for the root account. You should change
- root's .bashrc or .login file to set the shell prompt to something
- other than your regular user prompt. For example, many people use
- the character ``$'' in prompts for regular users, and reserve the
- character ``#'' for the root user prompt.
-
- o Only login as root when absolutely necessary. And, as soon as
- you're finished with your work as root, log out. The less you use
- the root account, the less likely you'll be to do damage on your
- system.
-
- Of course, there is a breed of UNIX hackers out there who use root for
- virtually everything. But every one of them has, at some point, made
- a silly mistake as root and trashed the system. The general rule is,
- until you're familiar with the lack of restrictions on root, and are
- comfortable using the system without such restrictions, login as root
- sparingly.
- Of course, everyone makes mistakes. Linus Torvalds himself once
- accidentally deleted the entire kernel directory tree on his system.
- Hours of work were lost forever. Fortunately, however, because of his
- knowledge of the filesystem code, he was able to reboot the system and
- reconstruct the directory tree by hand on disk.
- Put another way, if you picture using the root account as wearing a
- 4.1. About Root, Hats, and the Feeling of Power 139
- _______________________________________________________________________
-
- special magic hat that gives you lots of power, so that you can, by
- waving your hand, destroy entire cities, it is a good idea to be a
- bit careful about what you do with your hands. Since it is easy to
- move your hand in a destructive way by accident, it is not a good idea
- to wear the magic hat when it is not needed, despite the wonderful
- feeling.
-
- 4.1.2 Abusing the system
-
- Along with the feeling of power comes the tendency to do harm.
- This is one of the grey areas of UNIX system administration, but
- everyone goes through it at some point in time. Most users of UNIX
- systems never have the ability to wield this power---on university
- and business UNIX systems, only the highly-paid and highly-qualified
- system administrators ever login as root. In fact, at many such
- institutions, the root password is a highly guarded secret: it is
- treated as the Holy Grail of the institution. A large amount of
- hubbub is made about logging in as root; it is portrayed as a wise and
- fearsome power, given only to an exclusive cabal.
- This kind of attitude towards the root account is, quite simply,
- the kind of thing which breeds malice and contempt. Because root is
- so fluffed-up, when some users have their first opportunity to login
- as root (either on a Linux system or elsewhere), the tendency is to
- use root's privileges in a harmful manner. I have known so-called
- ``system administrators'' who read other user's mail, delete user's
- files without warning, and generally behave like children when given
- such a powerful ``toy''.
- Because root has such privilege on the system, it takes a certain
- amount of maturity and self-control to use the account as it was
- intended---to run the system. There is an unspoken code of honor
- which exists between the system administrator and the users on
- the system. How would you feel if your system administrator was
- reading your e-mail or looking over your files? There is still no
- strong legal precedent for electronic privacy on time-sharing computer
- systems. On UNIX systems, the root user has the ability to forego
- all security and privacy mechanisms on the system. It is important
- that the system administrator develop a trusting relationship with the
- users on the system. I can't stress that enough.
-
- 4.1.3 Dealing with users
-
- UNIX security is rather lax by design. Security on the system was an
- afterthought---the system was originally developed in an environment
- where users intruding upon other users was simply unheard of. Because
- of this, even with security measures, there is still the ability for
- normal users to do harm.
- System administrators can take two stances when dealing with
- abusive users: they can be either paranoid or trusting. The paranoid
- system administrator usually causes more harm than he or she prevents.
- One of my favorite sayings is, ``Never attribute to malice anything
- 4.1. About Root, Hats, and the Feeling of Power 140
- _______________________________________________________________________
-
- which can be attributed to stupidity.'' Put another way, most users
- don't have the ability or knowledge to do real harm on the system.
- 90% of the time, when a user is causing trouble on the system (by, for
- instance, filling up the user partition with large files, or running
- multiple instances of a large program), the user is simply unaware
- that what he or she is doing is a problem. I have come down on users
- who were causing a great deal of trouble, but they were simply acting
- out of ignorance---not malice.
- When you deal with users who are causing potential trouble, don't
- be accusative. The old rule of ``innocent until proven guilty'' still
- holds. It is best to simply talk to the user, and question about
- the trouble, instead of causing a confrontation. The last thing you
- want to do is be on the user's bad side. This will raise a lot
- of suspicion about you---the system administrator---running the system
- correctly. If a user believes that you distrust or dislike them, they
- might accuse you of deleting files or breaching privacy on the system.
- This is certainly not the kind of position that you want to be in.
- If you do find that a user has been attempting to ``crack'' the
- system, or was intentionally doing harm to the system, don't return
- the malicious behavior with malice of your own. Instead, simply
- provide a warning---but be flexible. In many cases, you may catch a
- user ``in the act'' of doing harm to the system---give them a warning.
- Tell them not to let it happen again. However, if you do catch them
- causing harm again, be absolutely sure that it is intentional. I
- can't even begin to describe the number of cases where it appeared
- as though a user was causing trouble, when in fact it was either an
- accident or a fault of my own.
-
- 4.1.4 Setting the rules
-
- The best way to run a system is not with an iron fist. That may
- be how you run the military, but UNIX was not designed for such
- discipline. It makes sense to lay down a simple and flexible set of
- guidelines for users---but remember, the fewer rules you have, the
- less chance there is of breaking them. Even if your rules for using
- the system are perfectly reasonable and clear, users will always at
- times break these rules without intending to. This is especially true
- in the case of new UNIX users, who are just learning the ropes of the
- system. It's not patently obvious, for example, that you shouldn't
- download a gigabyte of files and mail them to everyone on the system.
- Users need help understanding the rules, and why they are there.
- If you do specify usage guidelines for your system, make sure that
- the reason behind a particular guideline is made clear. If you don't,
- then users will find all sorts of creative ways to get around the
- rule, and not know that they are in fact breaking it.
-
- 4.1.5 What it all means
-
- We can't tell you how to run your system to the last detail. Most of
- the philosophy depends on how you're using the system. If you have
- 4.2. Booting the System 141
- _______________________________________________________________________
-
- many users, things are much different than if you only have a few
- users, or if you're the only user on the system. However, it's always
- a good idea---in any situation---to understand what being the system
- administrator really means.
- Being the system administrator doesn't make you a UNIX wizard.
- There are many system admins out there who know very little about
- UNIX. Likewise, there are many ``normal'' users out there who know
- more about UNIX than any system administrator could. Also, being the
- system administrator does not allow you to use malice against your
- users. Just because the system gives you the privilege to mess with
- user files does not mean that you have any right to do so.
- Lastly, being the system administrator is really not a big deal.
- It doesn't matter if your system is a little 386 or a Cray
- supercomputer. Running the system is the same, regardless. Knowing
- the root password isn't going to earn you money or fame. It will
- allow you to maintain the system, and keep it running. That's it.
-
-
- 4.2 Booting the System
-
- There are several ways to boot the system, either from floppy or from
- the hard drive.
-
- 4.2.1 Using a boot floppy
-
- Many people boot Linux using a ``boot floppy'' which contains a copy
- of the Linux kernel. This kernel has the Linux root partition coded
- into it, so it will know where to look on the hard drive for the root
- filesystem. (The rdev command can be used to set the root partition
- in the kernel image; see below.) This is the type of floppy created
- by Slackware during installation, for example.
- To create your own boot floppy, first locate the kernel image on
- your hard disk. It should be in the file /Image or /etc/Image. Some
- installations use the file /vmlinux for the kernel.
- You may instead have a compressed kernel. A compressed kernel
- uncompresses itself into memory at boot time, and takes up much less
- space on the hard drive. If you have a compressed kernel, it may be
- found in the file /zImage or /etc/zImage.
- Once you know where the kernel is, set the root device in the
- kernel image to the name of your Linux root partition with the rdev
- command. The format of the command is
-
- rdev <kernel-name> <root-device>
-
- where <kernel-name> is the name of the kernel image, and <root-device>
- is the name of the Linux root partition. For example, to set the root
- device in the kernel /etc/Image to /dev/hda2, use the command
-
- # rdev /etc/Image /dev/hda2
- 4.2. Booting the System 142
- _______________________________________________________________________
-
- rdev can set other options in the kernel as well, such as the
- default SVGA mode to use at boot time. Just use ``rdev -h'' to get a
- help message.
- After setting the root device, you can simply copy the kernel image
- to the floppy. Whenever copying data to a floppy, it's a good idea to
- MS-DOS format the floppy first. This lays down the sector and track
- information on the floppy, so it can be detected as either high or low
- density.
- For example, to copy the kernel in the file /etc/Image to the
- floppy in /etc/fd0, use the command
-
- # cp /etc/Image /dev/fd0
-
- This floppy should now boot Linux.
-
- 4.2.2 Using LILO
-
- Another method of booting is to use LILO, a program which resides in
- the boot sector of your hard disk. This program is executed when the
- system is booted from the hard disk, and can automatically boot up
- Linux from a kernel image stored on the hard drive itself.
- LILO can also be used as a first-stage boot loader for several
- operating systems, allowing you to select at boot time which operating
- system (such as Linux or MS-DOS) to boot. When you boot using
- LILO, the default operating system is booted unless you press [ctrl],
- [alt], or [shift] during the bootup sequence. If you press any of
- these keys, you will be provided with a boot prompt, at which you
- type the name of the operating system to boot (such as ``linux'' or
- ``msdos''). If you press [tab] at the boot prompt, a listing of
- available operating systems will be provided.
- The easy way to install LILO is to edit the configuration file,
- /etc/lilo.conf, and then run the command
-
- # /sbin/lilo
-
- The LILO configuration file contains a ``stanza'' for each
- operating system that you want to boot. The best way to demonstrate
- this is with an example LILO config file. The below setup is for a
- system which has a Linux root partition on /dev/hda1, and an MS-DOS
- partition on /dev/hda2.
-
- # Tell LILO to modify the boot record on /dev/hda (the first
- # non-
- SCSI hard drive). If you boot from a drive other than /dev/hda,
- # change the following line.
- boot = /dev/hda
-
- # Name of the boot loader. No reason to modify this un-
- less you're doing
- # some serious hacking on LILO.
- 4.3. Shutting Down 143
- _______________________________________________________________________
-
- install = /boot/boot.b
-
- # Have LILO perform some optimization.
- compact
-
- # Stanza for Linux root partition on /dev/hda1.
- image = /etc/Image # Location of kernel
- label = linux # Name of OS (for the LILO boot menu)
- root = /dev/hda1 # Location of root partition
- vga = ask # Tell ker-
- nel to ask for SVGA modes at boot time
-
- # Stanza for MSDOS partition on /dev/hda2.
- other = /dev/hda2 # Location of partition
- table = /dev/hda # Location of partition table for /dev/hda2
- label = msdos # Name of OS (for boot menu)
-
- The first operating system stanza in the config file will be the
- default OS for LILO to boot. You can select another OS to boot at the
- LILO boot prompt, as discussed above.
- Remember that every time you update the kernel image on disk, you
- should rerun /sbin/lilo in order for the changes to be reflected on
- the boot sector of your drive.
- Also note that if you use the ``root ='' line, above, there's no
- reason to use rdev to set the root partition in the kernel image.
- LILO sets it for you at boot time.
- The Linux FAQ (see Appendix A) provides more information on LILO,
- including how to use LILO to boot with OS/2's Boot Manager.
-
-
- 4.3 Shutting Down
-
- Shutting down a Linux system is a bit tricky. Remember that you
- should never just turn off the power or hit the reset switch while the
- system is running. The kernel keeps track of disk I/O in memory
- buffers. If you reboot the system without giving the kernel the
- chance to write its buffers to disk, you can corrupt your filesystems.
- Other precautions are taken at shutdown time as well. All
- processes are sent a signal, which allows them to die gracefully
- (writing and closing all files, and so on). Filesystems are unmounted
- for safety. If you wish, the system can also alert users that the
- system is going down and give them a change to log off.
- The easiest way to shutdown is with the shutdown command. The
- format of the command is
-
- shutdown <time> <warning-message>
-
- The <time> argument is the time to shutdown the system (in the format
- hh:mm:ss), and <warning-message> is a message displayed on all user's
- terminals before shutdown. Alternately, you can specify the <time>
- 4.4. Managing Users 144
- _______________________________________________________________________
-
- as ``now'', to shutdown immediately. The -r option may be given to
- shutdown to reboot the system after shutting down.
- For example, to shutdown the system at 8:00pm, use the command
-
- # shutdown -r 20:00
-
- The command halt may be used to force an immediate shutdown,
- without any warning messages or grace period. halt is useful if
- you're the only one using the system, and want to shut down the system
- and turn it off.
- ! Don't turn off the power or reboot the system until you see the
- message:
-
- The system is halted
-
- It is very important that you shutdown the system ``cleanly''
- using the shutdown or halt commands. On some systems, pressing
- [ctrl-alt-del] will be trapped and cause a shutdown; on other systems,
- however, using the ``Vulcan nerve pinch'' will reboot the system
- immediately and may cause disaster.
-
-
- 4.4 Managing Users
-
- Whether or not you have many users on your system, it's important
- to understand the aspects of user management under Linux. Even if
- you're the only user, you should presumably have a separate account
- for yourself (an account other than root to do most of your work).
- Each person using the system should have his or her own account.
- It is seldom a good idea to have several people share the same
- account. Not only is security an issue, but accounts are used to
- uniquely identify users to the system. You need to be able to keep
- track of who is doing what.
-
- 4.4.1 User management concepts
-
- The system keeps track of a number of pieces of information about each
- user. They are summarized below.
- username The username is the unique identifier given to every user
- on the system. Examples of usernames are larry, karl,
- and mdw. Letters and digits may be used, as well as
- the characters ``_'' (underscore) and ``.'' (period).
- Usernames are usually limited to 8 characters in length.
-
- user ID The user ID, or UID, is a unique number given to every
- user on the system. The system usually keeps track of
- information by UID, not username.
-
- group ID The group ID, or GID, is the ID of the user's default
- group. In Section 3.9 we discussed group permissions;
- 4.4. Managing Users 145
- _______________________________________________________________________
-
- each user belongs to one or more groups defined by the
- system administrator. More about this below.
-
- password The system also stores the user's encrypted password. The
- passwd command is used to set and change user passwords.
-
- full name The user's ``real name'' or ``full name'' is stored along
- with the username. For example, the user schmoj may have
- the name ``Joe Schmo'' in real life.
-
- home directory
- The home directory is the directory in which the user is
- initially placed at login time. Every user should have
- his or her own home directory, usually found under /home.
-
- login shell
- The user's login shell is the shell which is started for
- the user at login time. Examples are /bin/bash and
- /bin/tcsh.
- The file /etc/passwd contains this information about users. Each
- line in the file contains information about a single user; the format
- of each line is
-
- username:encrypted password:UID:GID:full name:home direc-
- tory:login shell
-
- An example might be:
-
- kiwi:Xv8Q981g71oKK:102:100:Laura Poole:/home/kiwi:/bin/bash
-
- As we can see, the first field, ``kiwi'', is the username.
- The next field, ``Xv8Q981g71oKK'', is the encrypted password.
- Passwords are not stored on the system in any human-readable format.
- The password is encrypted using itself as the secret key. In other
- words, you need to know the password to decrypt it. This form of
- encryption is fairly secure.
- Some systems use ``shadow password'' in which password information
- is relegated to the file /etc/shadow. Because /etc/passwd is
- world-readable, /etc/shadow provides some degree of extra security
- because it is not. Shadow password provides some other features such
- as password expiration and so on; we will not go into these features
- here.
- The third field, ``102'', is the UID. This must be unique for each
- user. The fourth field, ``100'', is the GID. This user belongs to
- the group numbered 100. Group information, like user information,
- is stored in the file /etc/group. See Section 4.4.5 for more
- information.
- The fifth field is the user's full name, ``Laura Poole''. The
- last two fields are the user's home directory (/home/kiwi) and login
- shell (/bin/bash), respectively. It is not required that the user's
- 4.4. Managing Users 146
- _______________________________________________________________________
-
- home directory be given the same name as the username. It does help
- identify the directory, however.
-
- 4.4.2 Adding users
-
- When adding a user, there are several steps to be taken. First, the
- user must be given an entry in /etc/passwd, with a unique username
- and UID. The GID, fullname, and other information must be specified.
- The user's home directory must be created, and the permissions on
- the directory set so that the user owns the directory. Shell
- initialization files must be provided in the new home directory and
- other system-wide configuration must be done (for example, setting up
- a spool for incoming e-mail for the new user).
- While it is not difficult to add users by hand (I do), when you
- are running a system with many users it is easy to forget something.
- The easiest way to add users is to use an interactive program which
- asks you for the required information and updates all of the system
- files automatically. The name of this program is useradd or adduser,
- depending on what software was installed. The man pages for these
- commands should be fairly self-explanatory.
-
- 4.4.3 Deleting users
-
- Similarly, deleting users can be accomplished with the commands
- userdel or deluser depending on what software was installed on the
- system.
- If you'd like to temporarily ``disable'' a user from logging into
- the system (without deleting the user's account), you can simply
- prepend an asterisk (``*'') to the password field in /etc/passwd. For
- example, changing kiwi's /etc/passwd entry to
-
- kiwi:*Xv8Q981g71oKK:102:100:Laura Poole:/home/kiwi:/bin/bash
-
- will restrict kiwi from logging in.
-
-
- 4.4.4 Setting user attributes
-
- After you have created a user, you may need to change attributes for
- that user, such as home directory or password. The easiest way to do
- this is to change the values directly in /etc/passwd. To set a user's
- password, use the passwd command. For example,
-
- # passwd larry
-
- will change larry's password. Only root may change other user's
- password in this manner. Users can change their own passwords with
- passwd as well.
- On some systems, the commands chfn and chsh will be available to
- allow users to set their own fullname and login shell attributes. If
- 4.5. Archiving and Compressing Files 147
- _______________________________________________________________________
-
- not, they will have to ask the system administrator to change these
- attributes for them.
-
- 4.4.5 Groups
-
- As we have mentioned, each user belongs to one or more groups.
- The only real importance of group relationships pertains to file
- permissions, as you'll recall from Section 3.9, each file has a
- ``group ownership'' and a set of group permissions which defines how
- users in that group may access the file.
- There are several system-defined groups such as bin, mail, and
- sys. Users should not belong to any of these groups; they are used
- for system file permissions. Instead, users should belong to an
- individual group such as users. If you want to be cute, you can
- maintain several groups of users such as student, staff, and faculty.
- The file /etc/group contains information about groups. The format
- of each line is
-
- group name:password:GID:other members
-
- Some example groups might be:
-
- root:*:0:
- users:*:100:mdw,larry
- guest:*:200:
- other:*:250:kiwi
-
- The first group, root, is a special system group reserved for the
- root account. The next group, users, is for regular users. It has
- a GID of 100. The users mdw and larry are given access to this
- group. Remember that in /etc/passwd each user was given a default
- GID. However, users may belong to more than one group, by adding their
- usernames to other group lines in /etc/group. The groups command
- lists what groups you are given access to.
- The third group, guest, is for guest users, and other is for
- ``other'' users. The user kiwi is given access to this group as well.
- As you can see, the ``password'' field of /etc/group is rarely
- used. It is sometimes used to set a password on group access. This
- is seldom necessary. To protect users from changing into priveleged
- groups (with the newgroup command), set the password field to ``*''.
- The commands addgroup or groupadd may be used to add groups to
- your system. Usually, it's easier just to add entries in /etc/group
- yourself, as no other configuration needs to be done to add a group.
- To delete a group, simply delete its entry in /etc/group.
-
-
- 4.5 Archiving and Compressing Files
-
- Before we can talk about backups, we need to introduce the tools used
- to archive files and software on UNIX systems.
- 4.5. Archiving and Compressing Files 148
- _______________________________________________________________________
-
- 4.5.1 Using tar
-
- The tar command is most often used to archive files.
- The format of the tar command is
-
- tar <options> <file1> <file2> ... <fileN>
-
- where <options> is the list of commands and options for tar, and
- <file1> through <fileN> is the list of files to add or extract from the
- archive.
- For example, the command
-
- # tar cvf backup.tar /etc
-
- would pack all of the files in /etc into the tar archive backup.tar.
- The first argument to tar---``cvf''---is the tar ``command''. ``c''
- tells tar to create a new archive file. The ``v'' option forces tar
- into verbose mode---printing each filename as it is archived. The
- ``f'' option tells tar that the next argument---backup.tar---is the
- name of the archive to create. The rest of the arguments to tar are
- the file and directory names to add to the archive.
- The command
-
- # tar xvf backup.tar
-
- will extract the tar file backup.tar in the current directory. This
- can sometimes be dangerous---when extracting files from a tar file,
- old files are overwritten.
- Furthermore, before extracting tar files it is important to know
- where the files should be unpacked. For example, let's say
- you archived the following files: /etc/hosts, /etc/group, and
- /etc/passwd. If you use the command
-
- # tar cvf backup.tar /etc/hosts /etc/group /etc/passwd
-
- the directory name /etc/ is added to the beginning of each filename.
- In order to extract the files to the correct location, you would need
- to use the following commands:
-
- # cd /
- # tar xvf backup.tar
-
- because files are extracted with the pathname saved in the archive
- file.
- If, however, you archived the files with the command
-
- # cd /etc
- # tar cvf hosts group passwd
-
- the directory name is not saved in the archive file. Therefore, you
- 4.5. Archiving and Compressing Files 149
- _______________________________________________________________________
-
- would need to ``cd /etc'' before extracting the files. As you can
- see, how the tar file is created makes a large difference in where you
- extract it. The command
-
- # tar tvf backup.tar
-
- may be used to display an ``index'' of the tar file before unpacking
- it. In this way you can see what directory the filenames in the
- archive are stored relative to, and can extract the archive from the
- correct location.
-
- 4.5.2 gzip and compress
-
- Unlike archiving programs for MS-DOS, tar does not automatically
- compress files as it archives them. Therefore, if you are archiving
- two 1-megabyte files, the resulting tar file will be two megabytes in
- size. The gzip command may be used to compress a file (the file to
- compress need not be a tar file). The command
-
- # gzip -9 backup.tar
-
- will compress backup.tar and leave you with backup.tar.gz, the
- compressed version of the file. The -9 switch tells gzip to use the
- highest compression factor.
- The gunzip command may be used to uncompress a gzipped file.
- Equivalently, you may use ``gzip -d''.
- gzip is a relatively new tool in the UNIX community. For many
- years, the compress command was used instead. However, because of
- several factors(1), compress is being phased out.
- compressed files end in the extension .Z. For example, backup.tar.Z
- is the compressed version of backup.tar, while backup.tar.gz is the
- gzipped version(2). The uncompress command is used to expand a
- compressed file; gunzip knows how to handle compressed files as well.
-
- 4.5.3 Putting them together
-
- Therefore, to archive a group of files and compress the result, you
- can use the commands:
-
- # tar cvf backup.tar /etc
- # gzip -9 backup.tar
-
- ----------------------------
- 1. These factors include a software patent dispute against the
- compress algorithm and the fact that gzip is much more efficient than
- compress.
-
- 2. To add further confusion, for some time the extension .z
- (lowercase ``z'') was used for gzipped files. The official gzip
- extension is now .gz.
- 4.5. Archiving and Compressing Files 150
- _______________________________________________________________________
-
- The result will be backup.tar.gz. To unpack this file, use the
- reverse set of commands:
-
- # gunzip backup.tar.gz
- # tar xvf backup.tar
-
- Of course always make sure that you are in the correct directory
- before unpacking a tar file.
- You can use some UNIX cleverness to do all of this on one command
- line, as in the following:
-
- # tar cvf - /etc | gzip -9c > backup.tar.gz
-
- Here, we are sending the tar file to ``-'', which stands for tar's
- standard output. This is piped to gzip, which compresses the incoming
- tar file, and the result is saved in backup.tar.gz. The -c option to
- gzip tells gzip to send its output to stdout, which is redirected to
- backup.tar.gz.
- A single command used to unpack this archive would be:
-
- # gunzip -c backup.tar.gz | tar xvf -
-
- Again, gunzip uncompresses the contents of backup.tar.gz and sends the
- resulting tar file to stdout. This is piped to tar, which reads
- ``-'', this time referring to tar's standard input.
- Happily, the tar command also includes the z option to
- automatically compress/uncompress files on the fly, using the gzip
- compression algorithm.
- For example, the command
-
- # tar cvfz backup.tar.gz /etc
-
- is equivalent to
-
- # tar cvf backup.tar /etc
- # gzip backup.tar
-
- Just as the command
-
- # tar xvfz backup.tar.Z
-
- may be used instead of
-
- # uncompress backup.tar.Z
- # tar xvf backup.tar
-
- Refer to the man pages for tar and gzip for more information.
- 4.6. Using Floppies and Making Backups 151
- _______________________________________________________________________
-
- 4.6 Using Floppies and Making Backups
-
- Floppies are usually used as backup media. If you don't have a tape
- drive connected to your system, floppy disks can be used (although
- they are slower and somewhat less reliable).
- You may also use floppies to hold individual filesystems---in this
- way, you can mount the floppy to access the data on it.
-
- 4.6.1 Using floppies for backups
-
- The easiest way to make a backup using floppies is with tar. The
- command
-
- # tar cvfzM /dev/fd0 /
-
- will make a complete backup of your system using the floppy drive
- /dev/fd0. The ``M'' option to tar allows the backup to be a
- multivolume backup; that is, when one floppy is full, tar will prompt
- for the next. The command
-
- # tar xvfzM /dev/fd0
-
- can be used to restore the complete backup. This method can also be
- used if you have a tape drive (/dev/rmt0) connected to your system.
- Several other programs exist for making multiple-volume backups;
- the backflops program found on tsx-11.mit.edu may come in handy.
- Making a complete backup of the system can be time- and
- resource-consuming. Most system administrators use a incremental
- backup policy, in which every month a complete backup is taken, and
- every week only those files which have been modified in the last week
- are backed up. In this case, if you trash your system in the middle
- of the month, you can simply restore the last full monthly backup, and
- then restore the last weekly backups as needed.
- The find command can be useful in locating files which have changed
- since a certain date. Several scripts for managing incremental
- backups can be found on sunsite.unc.edu.
-
- 4.6.2 Using floppies as filesystems
-
- You can create a filesystem on a floppy just as you would on a hard
- drive partition. For example,
-
- # mke2fs /dev/fd0 1440
-
- creates a filesystem on the floppy in /dev/fd0. The size of the
- filesystem must correspond to the size of the floppy. High-density
- 3.5" disks are 1.44 megabytes, or 1440 blocks, in size. High-density
- 5.25" disks are 1200 blocks.
- In order to access the floppy, you must mount the filesystem
- contained on it. The command
- 4.7. Upgrading and Installing New Software 152
- _______________________________________________________________________
-
- # mount -t ext2 /dev/fd0 /mnt
-
- will mount the floppy in /dev/fd0 on the directory /mnt. Now, all of
- the files on the floppy will appear under /mnt on your drive. The
- ``-t ext2'' specifies an ext2fs filesystem type. If you created
- another type of filesystem on the floppy, you'll need to specify its
- type to the mount command.
- The ``mount point'' (the directory where you're mounting the
- filesystem) needs to exist when you use the mount command. If it
- doesn't exist, simply create it with mkdir.
- See Section 4.8 for more information on filesystems, mounting, and
- mount points.
- ! Note that any I/O to the floppy is buffered just as hard disk I/O
- is. If you change data on the floppy, you may not see the drive light
- come on until the kernel flushes its I/O buffers. It's important that
- you not remove a floppy before you unmount it; this can be done with
- the command
-
- # umount /dev/fd0
-
- Do not simply switch floppies as you would on an MS-DOS system;
- whenever you change floppies, umount the first one and mount the next.
-
-
- 4.7 Upgrading and Installing New Software
-
- Another duty of the system administrator is upgrading and installing
- new software.
- The Linux community is very dynamic. New kernel releases come
- out every few weeks, and other software is updated almost as often.
- Because of this, new Linux users often feel the need to upgrade their
- systems constantly to keep up the the rapidly changing pace. Not only
- is this unnecessary, it's a waste of time: to keep up with all of
- the changes in the Linux world, you would be spending all of your time
- upgrading and none of your time using the system.
- So, when should you upgrade? Some people feel that you should
- upgrade when a new distribution release is made---for example, when
- Slackware comes out with a new version. Many Linux users completely
- reinstall their system with the newest Slackware release every time.
- This, also, is a waste of time. In general, changes to Slackware
- releases are small. Downloading and reinstalling 30 disks when
- only 10% of the software has been actually modified is, of course,
- pointless.
- The best way to upgrade your system is to do it by hand: only
- upgrade those software packages which you know that you should
- upgrade. This scares a lot of people: they want to know what to
- upgrade, and how, and what will break if they don't upgrade. In
- order to be successful with Linux, it's important to overcome your
- fears of ``doing it yourself''--- which is what Linux is all about.
- In fact, once you have your system working and all software correctly
- configured, reinstalling with the newest release will no doubt wipe
- 4.7. Upgrading and Installing New Software 153
- _______________________________________________________________________
-
- all of your configuration and things will be broken again, just as
- they were when you first installed your system. Setting yourself back
- in this manner is unnecessary---all that is needed is some know-how
- about upgrading your system, and how to do it right.
- You'll find that when you upgrade one component of your system,
- other things should not break. For example, most of the software on
- my system is left over from an ancient 0.96 MCC Interim installation.
- Yet, I run the newest version of the kernel and libraries with this
- software with no problem. For the most part, senselessly upgrading to
- ``keep up with the trend'' is not important at all. This isn't MS-DOS
- or Microsoft Windows. There is no important reason to run the newest
- version of all of the software. If you find that you would like or
- need features in a new version, then upgrade. If not, then don't.
- In other words, only upgrade what you have to, and when you have to.
- Don't just upgrade for the sake of upgrading. That will waste a lot
- of time and effort trying to keep up.
- The most important software to upgrade on your system is the
- kernel, the libraries, and the gcc compiler. These are the three
- essential parts of your system, and in some cases they all depend on
- each other for everything to work successfully. Most of the other
- software on your system does not need to be upgraded periodically.
-
- 4.7.1 Upgrading the kernel
-
- Upgrading the kernel is simply a matter of getting the sources and
- compiling them yourself. You must compile the kernel yourself in
- order to enable or disable certain features, as well as to ensure that
- the kernel will be optimized to run on your machine. The process is
- quite painless.
- The kernel sources may be retrieved from any of the Linux FTP sites
- (see Section C for a list). On sunsite.unc.edu, for instance, the
- kernel sources are found in /pub/Linux/kernel. Kernel versions are
- numbered using a version number and a patchlevel. For example, kernel
- version 0.99 patchlevel 11 is usually written as 0.99.pl11, or just
- 0.99.11.
- The kernel sources are released as a gzipped tar file(3). For
- example, the file containing the 0.99.pl11 kernel sources is
- linux-0.99.11.tar.gz.
- Unpack this tar file from the directory /usr/src; it creates the
- directory /usr/src/linux which contains the kernel sources. You
- should delete or rename your existing /usr/src/linux before unpacking
- the new version.
- Once the sources are unpacked, you need to make sure that two
-
- ----------------------------
- 3. Often, a patch file is also released for the current kernel
- version which allows you to patch your current kernel sources from the
- last patchlevel to the current one (using the program patch). In most
- cases, however, it's usually easier to install the entire new version
- of the kernel sources.
- 4.7. Upgrading and Installing New Software 154
- _______________________________________________________________________
-
- symbolic links in /usr/include are correct. To create these links,
- use the commands
-
- # ln -sf /usr/src/linux/include/linux /usr/include/linux
- # ln -sf /usr/src/linux/include/asm /usr/include/asm
-
- Once you have created these links once, there is no reason to create
- them again when you install the next version of the kernel sources.
- (See Section 3.10 for more about symbolic links.)
- Note that in order to compile the kernel, you must have the gcc and
- g++ C and C++ compilers installed on your system. You may need to
- have the most recent versions of these compilers: see Section 4.7.3,
- below, for more information.
- To compile the kernel, first cd to /usr/src/linux. Run the
- command make config. This command will prompt you for a number
- of configuration options, such as what filesystem types you wish to
- include in the new kernel.
- Next, edit /usr/src/linux/Makefile. Be sure that the definition
- for ROOT_DEV is correct---it defines the device used as the root
- filesystem at boot time. The usual definition is
-
- ROOT_DEV = CURRENT
-
- Unless you are changing your root filesystem device, there is no
- reason to change this.
- Next, run the command make dep to fix all of the source
- dependencies. This is a very important step.
- Finally, you're ready to compile the kernel. The command make
- Image will compile the kernel and leave the new kernel image in the
- file /usr/src/linux/Image. Alternately, the command make zImage will
- compile a compressed kernel image, which uncompresses itself at boot
- time and uses less drive space.
- Once you have the kernel compiled, you need to either copy it to a
- boot floppy (with a command such as ``cp Image /dev/fd0'') or install
- it using LILO to boot from your hard drive. See Section 4.2.2 for
- more information.
-
- 4.7.2 Upgrading the libraries
-
- As mentioned before, most of the software on the system is compiled
- to use shared libraries, which contain common subroutines shared among
- different programs.
- If you see the message
-
- Incompatible library version
-
- when attempting to run a program, then you need to upgrade to the
- version of the libraries which the program requires. Libraries are
- back-compatible; that is, a program compiled to use an older version
- of the libraries should work with the new version of the libraries
- 4.7. Upgrading and Installing New Software 155
- _______________________________________________________________________
-
- installed. However, the reverse is not true.
- The newest version of the libraries can be found on the Linux
- FTP sites. On sunsite.unc.edu, they are located in /pub/Linux/GCC.
- The ``release'' files there should explain what files you need to
- download and how to install them. Briefly, you should get the
- files image-version.tar.gz and inc-version.tar.gz where version is the
- version of the libraries to install, such as 4.4.1. These are gzipped
- tar files; the image file contains the library images to install in
- /lib and /usr/lib. The inc file contains include files to install in
- /usr/include
- The release-version.tar.gz should explain the installation
- procedure in detail (the exact instructions vary for each release).
- In general you need to install the library .a and .sa files in
- /usr/lib. These are the libraries used at compilation time.
- In addition, the shared library image files, libc.so.version are
- installed in /lib. These are the shared library images loaded at
- runtime by programs using the libraries. Each library has a symbolic
- link using the major version number of the library in /lib.
- For example, the libc library version 4.4.1 has a major version
- number of 4. The file containing the library is libc.so.4.4.1. A
- symbolic link of the name libc.so.4 is also in /lib pointing to
- this file. You need to change this symbolic link when upgrading
- the libraries. For example, when upgrading from libc.so.4.4 to
- libc.so.4.4.1, you need to change the symbolic link to point to the
- new version.
- ! It is very important that you change the symbolic link in one step,
- as given below. If you somehow delete the symbolic link libc.so.4,
- then programs which depend on the link (including basic utilities like
- ls and cat) will stop working. Use the following command to update
- the symbolic link libc.so.4 to point to the file libc.so.4.4.1:
-
- # ln -sf /lib/libc.so.4.4.1 /lib/libc.so.4
-
- You also need to change the symbolic link libm.so.version in the same
- manner. If you are upgrading to a different version of the libraries
- substitute to appropriate filenames above. The library release notice
- should explain the details. (See Section 3.10 for more information
- about symbolic links.)
-
- 4.7.3 Upgrading gcc
-
- The gcc C and C++ compiler is used to compile software on your system,
- most importantly the kernel. The newest version of gcc is found
- on the Linux FTP sites. On sunsite.unc.edu, it is found in the
- directory /pub/Linux/GCC (along with the libraries). There should be
- a release file for the gcc distribution detailing what files you need
- to download and how to install them.
- 4.8. Managing Filesystems 156
- _______________________________________________________________________
-
- 4.7.4 Upgrading other software
-
- Upgrading other software is usually just a matter of downloading the
- appropriate files and installing them. Most software for Linux is
- distributed at gzipped tar files, including either sources or binaries
- or both. If binaries are not included in the release, you may need
- to compile them yourself; usually, this means typing make in the
- directory where the sources are held.
- Reading the USENET newsgroup comp.os.linux.announce for announce-
- ments of new software releases is the easiest way to find out about
- new software. Whenever you are looking for software on an FTP site,
- downloading the ls-lR index file from the FTP site and using grep to
- find the files in question is the easiest way to locate software. If
- you have archie available to you, it can be of assistance as well(4).
- See Appendix A for more details.
- One handy source of Linux software is the Slackware distribution
- disk images. Each disk contains a number of .tgz files which are
- simply gzipped tar files. Instead of downloading the disks, you can
- download the desired .tgz files from the Slackware directories on
- the FTP site and install them directly. If you run the Slackware
- distribution, the setup command can be used to automatically load and
- install a complete series of disks.
- Again, it's usually not a good idea to upgrade by reinstalling
- with the newest version of Slackware, or another distribution. If
- you reinstall in this way, you will no doubt wreck your current
- installation, including user directories and all of your customized
- configuration. The best way to upgrade software is piecewise; that
- is, if there is a program that you use often that has a new version,
- upgrade it. Otherwise, don't bother. Rule of thumb: If it ain't
- broke, don't fix it. If your current software works, there's no
- reason to upgrade.
-
-
- 4.8 Managing Filesystems
-
- Another task of the system administrator is taking care of
- filesystems. Most of this job entails periodically checking the
- filesystems for damage or corrupted files; many systems automatically
- check the filesystems at boot time.
-
- 4.8.1 Mounting filesystems
-
- First, a few concepts about filesystems. Before a filesystem is
- accessible to the system, it must be mounted on some directory. For
- example, if you have a filesystem on a floppy, you must mount it
-
- ----------------------------
- 4. If you don't have archie, you can telnet to an archie server
- such as archie.rutgers.edu, login as ``archie'' and use the command
- ``help''
- 4.8. Managing Filesystems 157
- _______________________________________________________________________
-
- under some directory, say /mnt, in order to access the files on it
- (see Section 4.6.2). After mounting the filesystem, all of the files
- in the filesystem appear in that directory. After unmounting the
- filesystem, the directory (in this case, /mnt) will be empty.
- The same is true of filesystems on the hard drive. The system
- automatically mounts filesystems on your hard drive for you at bootup
- time. The so-called ``root filesystem'' is mounted on the directory
- /. If you have a separate filesystem for /usr, for example, it is
- mounted on /usr. If you only have a root filesystem, all files
- (including those in /usr) exist on that filesystem.
- The command mount is used to mount a filesystem. The command
-
- mount -av
-
- is executed from the file /etc/rc (which is the system initialization
- file executed at boot time; see Section 4.10.1). The mount -av
- command obtains information on filesystems and mount points from the
- file /etc/fstab. An example fstab file appears below.
-
- # device directory type options
- /dev/hda2 / ext2 defaults
- /dev/hda3 /usr ext2 defaults
- /dev/hda4 none swap sw
- /proc /proc proc none
-
- The first field is the device---the name of the partition to
- mount. The second field is the mount point. The third field is
- the filesystem type---such as ext2 (for ext2fs) or minix (for Minix
- filesystems). Table 4.1 lists the various filesystem types available
- for Linux.(5) Not all of these filesystem types may be available on
- your system; your kernel must have support for them compiled in. See
- Section 4.7 for information on building the kernel.
- The last field of the fstab file contains mount options---usually,
- this is set to ``defaults''.
- As you can see, swap partitions are included in /etc/fstab as well.
- They have a mount directory of none, and type swap. The swapon -a
- command, executed from /etc/rc as well, is used to enable swapping on
- all swap devices listed in /etc/fstab.
- The fstab file contains one special entry---for the /proc
- filesystem. As mentioned in Section 3.11.1, the /proc filesystem is
- used to store information about system processes, available memory,
- and so on. If /proc is not mounted, commands such as ps will not
- work.
- ! The mount command may only be used by root. This is to ensure
- security on the system; you wouldn't want regular users mounting and
- unmounting filesystems on a whim. There are several software packages
-
- ----------------------------
- 5. This table is current as of kernel version 1.1.37.
- 4.8. Managing Filesystems 158
- _______________________________________________________________________
-
-
- Filesystem Typename Comment
-
- Second Extended Filesystem ext2 Most common Linux filesystem.
- Extended Filesystem ext Superseded by ext2.
- Minix Filesystem minix Original Minix filesystem; rarely
- used.
- Xia Filesystem xia Like ext2, but rarely used.
- UMSDOS Filesystem umsdos Used to install Linux on an MS-DOS
- partition.
- MS-DOS Filesystem msdos Used to access MS-DOS files.
- /proc Filesystem proc Provides process information for
- ps, etc.
- ISO 9660 Filesystem iso9660 Format used by most CD-ROMs.
- Xenix Filesystem xenix Used to access files from Xenix.
- System V Filesystem sysv Used to access files from System V
- variants for the x86.
- Coherent Filesystem coherent Used to access files from Coherent.
- HPFS Filesystem hpfs Read-only access for HPFS partitions
- (DoubleSpace).
-
- Table 4.1: Linux Filesystem Types
-
-
-
- available which allow regular users to mount and unmount filesystems
- (floppies in particular) without compromising system security.
- The mount -av command actually mounts all filesystems other than
- the root filesystem (in the table above, /dev/hda2). The root
- filesystem is automatically mounted at boot time by the kernel.
- Instead of using mount -av, you can mount a filesystem by hand.
- The command
-
- # mount -t ext2 /dev/hda3 /usr
-
- is equivalent to mounting the filesystem with the entry /dev/hda3 in
- the fstab example file above.
- In general, you should never have to mount or unmount filesystems
- by hand. The mount -av command in /etc/rc takes care of mounting the
- filesystems at boot time. Filesystems are automatically unmounted by
- the shutdown or halt commands before bringing the system down.
-
- 4.8.2 Checking filesystems
-
- It is usually a good idea to check your filesystems for damage or
- corrupt files every now and then. Some systems automatically check
- their filesystems at boot time (with the appropriate commands in
- /etc/rc).
- The command used to check a filesystem depends on the type of the
- filesystem in question. For ext2fs filesystems (the most commonly
- used type), this command is e2fsck. For example, the command
-
- # e2fsck -av /dev/hda2
-
- will check the ext2fs filesystem on /dev/hda2 and automatically
- correct any errors.
- 4.9. Using a swap file 159
- _______________________________________________________________________
-
- It is usually a good idea to unmount a filesystem before checking
- it. For example, the command
-
- # umount /dev/hda2
-
- will unmount the filesystem on /dev/hda2, after which you can check
- it. The one exception is that you cannot unmount the root filesystem.
- In order to check the root filesystem when it's unmounted, you should
- use a maintenance boot/root diskette (see Section 4.11.1). You
- also cannot unmount a filesystem if any of the files in it are
- ``busy''---that is, being used by a running process. For example, you
- cannot unmount a filesystem if any user's current working directory is
- on that filesystem. You will receive a ``Device busy'' error if you
- attempt to unmount a filesystem which is in use.
- Other filesystem types use different forms of the e2fsck command,
- such as efsck and xfsck. On some systems, you can simply use the
- command fsck, which will determine the filesystem type and execute the
- appropriate command.
- ! It is important that you reboot your system immediately after
- checking a mounted filesystem if any corrections were made to that
- filesystem. (However, in general, you shouldn't check filesystems
- while they are mounted.) For example, if e2fsck reports that it
- corrected any errors with the filesystem, you should immediately
- shutdown -r in order to reboot the system. This is to allow the
- system to re-sync its information about the filesystem when e2fsck
- modifies it.
- The /proc filesystem never needs to be checked in this manner.
- /proc is a memory filesystem, managed directly by the kernel.
-
-
- 4.9 Using a swap file
-
- Instead of reserving an individual partition for swap space, you can
- use a file. However, to do so you'll need install the Linux software
- and get everything going before you create the swap file.
- If you have a Linux system installed, you can use the following
- commands to create a swap file. Below, we're going to create a swap
- file of size 8208 blocks (about 8 megs).
-
- # dd if=/dev/zero of=/swap bs=1024 count=8208
-
- This command creates the swap file itself. Replace the ``count=''
- with the size of the swap file in blocks.
-
- # mkswap /swap 8208
-
- This command will initialize the swapfile; again, replace the name and
- size of the swapfile with the appropriate values.
-
- # /etc/sync
- # swapon /swap
- 4.10. Miscellaneous Tasks 160
- _______________________________________________________________________
-
- Now we are swapping on the file /swap which we have created, after
- syncing, which ensures that the file has been written to disk.
- The one major drawback to using a swapfile in this manner is
- that all access to the swap file is done through the filesystem.
- This means that the blocks which make up the swap file may not be
- contiguous. Therefore, performance may not be as great as using
- a swap partition, for which blocks are always contiguous and I/O
- requests are done directly to the device.
- Another drawback in using a swapfile is the chance to corrupt your
- filesystem data---when using large swap files, there is the chance
- that you can corrupt your filesystem if something goes wrong. Keeping
- your filesystems and swap partitions separate will prevent this from
- happening.
- Using a swap file can be very useful if you have a temporary need
- for more swap space. For example, if you're compiling a large program
- and would like to speed things up somewhat, you can temporarily create
- a swap file and use it in addition to your regular swap space.
- To get rid of a swap file, first use swapoff, as in
-
- # swapoff /swap
-
- And you can safely delete the file.
-
- # rm /swap
-
- Remember that each swap file (or partition) may be as large as 16
- megabytes, but you may use up to 8 swap files or partitions on your
- system.
-
-
- 4.10 Miscellaneous Tasks
-
- Believe it or not, there are a number of housekeeping tasks for the
- system administrator which don't fall into any major category.
-
- 4.10.1 System startup files
-
- When the system boots, a number of scripts are executed automatically
- by the system before any user logs in. Here is a description of what
- happens.
- At bootup time, the kernel spawns the process /etc/init. init
- is a program which reads its configuration file, /etc/inittab, and
- spawns other processes based on the contents of this file. One of
- the important processes started from inittab is the /etc/getty process
- started on each virtual console. The getty process grabs the VC for
- use, and starts a login process on the VC. This allows you to login
- on each VC; if /etc/inittab does not contain a getty process for a
- certain VC, you will not be able to login on that VC.
- Another process executed from /etc/inittab is /etc/rc, the main
- system initialization file. This file is a simple shell script
- 4.10. Miscellaneous Tasks 161
- _______________________________________________________________________
-
- which executes any initialization commands needed at boot time, such
- as mounting the filesystems (see Section 4.8) and initializing swap
- space.
- Your system may execute other initialization scripts as well,
- such as /etc/rc.local. /etc/rc.local usually contains initialization
- commands specific to your own system, such as setting the hostname
- (see the next section). rc.local may be started from /etc/rc or from
- /etc/inittab directly.
-
- 4.10.2 Setting the hostname
-
- In a networked environment, the hostname is used to uniquely identify
- a particular machine, while in a standalone environment the hostname
- just gives the system personality and charm. It's like naming a pet:
- you can always address to your dog as ``The dog,'' but it's much more
- interesting to assign the dog a name such as Spot or Woofie.
- Setting the system's hostname is a simple matter of using the
- hostname command. If you are on a network, your hostname should be
- the full hostname of your machine, such as goober.norelco.com. If
- you are not on a network of any kind, you can choose an arbitrary
- host and domainname, such as loomer.vpizza.com, shoop.nowhere.edu, or
- floof.org.
- When setting the hostname, the hostname must appear in the file
- /etc/hosts, which assigns an IP address to each host. Even if your
- machine is not on a network, you should include your own hostname in
- /etc/hosts.
- For example, if you are not on a TCP/IP network, and your hostname
- is floof.org, simply include the following line in /etc/hosts:
-
- 127.0.0.1 floof.org localhost
-
- This assigns your hostname, floof.org, to the loopback address
- 127.0.0.1 (used if you're not on a network). The localhost alias is
- also assigned to this address.
- If you are on a TCP/IP network, however, your real IP address and
- hostname should appear in /etc/hosts. For example, if your hostname
- is goober.norelco.com, and your IP address is 128.253.154.32, add the
- following line to /etc/hosts:
-
- 128.253.154.32 goober.norelco.com
-
- If your hostname does not appear in /etc/hosts, you will not be
- able to set it.
- To set your hostname, simply use the hostname command. For
- example, the command
-
- # hostname -S goober.norelco.com
-
- sets the hostname to goober.norelco.com. In most cases, the hostname
- command is executed from one of the system startup files, such as
- 4.11. What To Do In An Emergency 162
- _______________________________________________________________________
-
- /etc/rc or /etc/rc.local. Edit these two files and change the
- hostname command found there to set your own hostname; upon rebooting
- the system the hostname will be set to the new value.
-
-
- 4.11 What To Do In An Emergency
-
- On some occasions, the system administrator will be faced with the
- problem of recovering from a complete disaster, such as forgetting the
- root password or trashing filesystems. The best advice is, don't
- panic. Everyone makes stupid mistakes---that's the best way to learn
- about system administration: the hard way.
- Linux is not an unstable version of UNIX. In fact, I have had fewer
- problems with system hangs than with commercial versions of UNIX on
- many platforms. Linux also benefits from a strong complement of
- wizards who can help you get out of a bind.
- The first step in investigating any problem is to attempt to fix it
- yourself. Poke around, see how things work. Too much of the time,
- a system administrator will post a desperate plea for help before
- looking into the problem at all. Most of the time, you'll find that
- fixing problems yourself is actually very easy. It is the path to
- guruhood.
- There are very few cases where reinstalling the system from scratch
- is necessary. Many new users accidentally delete some essential
- system file, and immediately reach for the installation disks. This
- is not a good idea. Before taking such drastic measures, investigate
- the problem and ask others to help fix things up. In almost all
- cases, you can recover your system from a maintenance diskette.
-
- 4.11.1 Recovering using a maintenance diskette
-
- One indispensable tool for the system administrator is the so called
- ``boot/root disk''---a floppy which can be booted for a complete Linux
- system, independent of your hard drive. Boot/root disks are actually
- very simple---you create a root filesystem on the floppy, place all of
- the necessary utilities on it, and install LILO and a bootable kernel
- on the floppy. Another technique is to use one floppy for the kernel
- and another for the root filesystem. In any case, the result is the
- same: you are running a Linux system completely from floppy.
- The canonical example of a boot/root disk is the Slackware boot
- disks(6). These diskettes contain a bootable kernel and a root
- filesystem, all on floppy. They are intended to be used to install
- the Slackware distribution, but come in very handy when doing system
- maintenance.
- The H.J Lu boot/root disk, available from /pub/Linux/GCC/rootdisk
-
- ----------------------------
- 6. See Section 2.1.1 for information on downloading these from the
- Internet. For this procedure, you don't need to download the entire
- Slackware release---only the boot and root diskettes.
- 4.11. What To Do In An Emergency 163
- _______________________________________________________________________
-
- on sunsite.unc.edu, is another example of such a maintenance disk.
- Or, if you're ambitious, you can create your own. In most cases,
- however, using a pre-made boot/root disk is much easier and will
- probably be more complete.
- Using a boot/root disk is very simple. Just boot the disk on your
- system, and login as root (usually no password). In order to access
- the files on your hard drive, you will need to mount your filesystems
- by hand. For example, the command
-
- # mount -t ext2 /dev/hda2 /mnt
-
- will mount an ext2fs filesystem on /dev/hda2 under /mnt. Remember
- that / is now on the boot/root disk itself; you need to mount
- your hard drive filesystems under some directory in order to access
- the files. Therefore, /etc/passwd on your hard drive is now
- /mnt/etc/passwd if you mount your root filesystem on /mnt.
-
- 4.11.2 Fixing the root password
-
- If you forget your root password, no problem. Just boot the boot/root
- disk, mount your root filesystem on /mnt, and blank out the password
- field for root in /mnt/etc/passwd, as so:
-
- root::0:0:root:/:/bin/sh
-
- Now root has no password; when you reboot from the hard drive you
- should be able to login as root and reset the password using passwd.
- Aren't you glad you learned how to use vi? On your boot/root disk,
- other editors such as Emacs probably aren't available, but vi should
- be.
-
- 4.11.3 Fixing trashed filesystems
-
- If you somehow trash your filesystems, you can run e2fsck (if you use
- the ext2fs filesystem type, that is) to correct any damaged data on
- the filesystems from floppy. Other filesystem types use different
- forms of the fsck command; see Section 4.8 for details.
- When checking your filesystems from floppy, it's best for the
- filesystems to not be mounted.
- One common cause of filesystem damage is superblock corruption.
- The superblock is the ``header'' of the filesystem that contains
- information on the filesystem status, size, free blocks, and so forth.
- If you corrupt your superblock (for example, by accidentally writing
- data directly to the filesystem's partition), the system may not
- recognize the filesystem at all. Any attempt to mount the filesystem
- could fail, and e2fsck won't be able to fix the problem.
- Happily, the ext2fs filesystem type saves copies of the superblock
- at ``block group'' boundaries on the drive---usually, every 8K blocks.
- In order to tell e2fsck to use a copy of the superblock, you can use a
- command such as
- 4.11. What To Do In An Emergency 164
- _______________________________________________________________________
-
- # e2fsck -b 8193 <partition>
-
- where <partition> is the partition on which the filesystem resides.
- The -b 8193 option tells e2fsck to use the copy of the superblock
- stored at block 8193 in the filesystem.
-
- 4.11.4 Recovering lost files
-
- If you accidentally deleted important files on your system, there's no
- way to ``undelete'' them. However, you can copy the relevant files
- from the floppy to your hard drive. For example, if you deleted
- /bin/login on your system (which allows you to login), simply boot
- the boot/root floppy, mount the root filesystem on /mnt, and use the
- command
-
- # cp -a /bin/login /mnt/bin/login
-
- The -a option tells cp to preserve the permissions on the file(s)
- being copied.
- Of course, if the files you deleted weren't essential system files
- which have counterparts on the boot/root floppy, you're out of luck.
- If you made backups, you can always restore from them.
-
- 4.11.5 Fixing trashed libraries
-
- If you accidentally trashed your libraries or symbolic links in /lib,
- more than likely commands which depended on those libraries will no
- longer run (see Section 4.7.2). The easiest solution is to boot your
- boot/root floppy, mount your root filesystem, and fix the libraries in
- /mnt/lib.
-
-
-
-
-
-
-
-
- Chapter 5
-
-
-
-
- Advanced Features
-
-
-
- This chapter will introduce you to some of the more interesting
- features of Linux. This assumes that you have at least basic UNIX
- experience, and understand the information contained in the previous
- chapters.
- The most important aspect of Linux that distinguishes it from other
- implementations of UNIX is its open design and philosophy. Linux was
- not developed by a small team of programmers headed by a marketing
- committee with a single goal in mind. It was developed by an
- ever-increasing group of hackers, putting what they wanted into a
- homebrew UNIX system. The types of software and diversity of design
- in the Linux world is large. Some people dislike this lack of
- uniformity and conformity---however, some call it one of the strongest
- qualities of Linux.
-
- 5.1 The X Window System
-
- The X Window System is a large and powerful (and somewhat complex)
- graphics environment for UNIX systems. The original X Window System
- code was developed at MIT; commercial vendors have since made X
- the industry standard for UNIX platforms. Virtually every UNIX
- workstation in the world runs some variant of the X Window system.
- A free port of the MIT X Window System version 11, release 6
- (X11R6) for 80386/80486/Pentium UNIX systems has been developed by a
- team of programmers originally headed by David Wexelblat(1). The
- release, known as XFree86(2), is available for System V/386, 386BSD,
- and other x86 UNIX implementations, including Linux. It includes all
- of the required binaries, support files, libraries, and tools.
- Configuring and using the X Window System is far beyond the scope
- of this book. You are encouraged to read The X Window System: A
- User's Guide---see Appendix A for information on this book. In this
-
- ----------------------------
- 1. David may be reached on the Internet at dwex@XFree86.org.
- 2. XFree86 is a trademark of The XFree86 Project, Inc.
-
-
-
- 165
- 5.1. The X Window System 166
- _______________________________________________________________________
-
- section, we'll give a step-by-step description of how to install and
- configure XFree86 for Linux, but you will have to fill in some of the
- details yourself by reading the documentation released with XFree86
- itself. (This documentation is discussed below.) The Linux XFree86
- HOWTO is another good source of information.
-
- 5.1.1 Hardware requirements
-
- As of XFree86 version 3.1, released in September 1994, the following
- video chipsets are supported. The documentation included with your
- video adaptor should specify the chipset used. If you are in the
- market for a new video card, or are buying a new machine that comes
- with a video card, have the vendor find out exactly what the make,
- model, and chipset of the video card is. This may require the
- vendor to call technical support on your behalf; in general vendors
- will be happy to do this. Many PC hardware vendors will state that
- the video card is a ``standard SVGA card'' which ``should work'' on
- your system. Explain that your software (mention Linux and XFree86!)
- does not support all video chipsets and that you must have detailed
- information.
- You can also determine your videocard chipset by running the
- SuperProbe program included with the XFree86 distribution. This is
- covered in more detail below.
- The following standard SVGA chipsets are supported:
-
- o Tseng ET3000, ET4000AX, ET4000/W32
-
- o Western Digital/Paradise PVGA1
-
- o Western Digital WD90C00, WD90C10, WD90C11, WD90C24, WD90C30,
- WD90C31, WD90C33
-
- o Genoa GVGA
-
- o Trident TVGA8800CS, TVGA8900B, TVGA8900C, TVGA8900CL, TVGA9000,
- TVGA9000i, TVGA9100B, TVGA9200CX, TVGA9320, TVGA9400CX, TVGA9420
-
- o ATI 18800, 18800-1, 28800-2, 28800-4, 28800-5, 28800-6, 68800-3,
- 68800-6, 68800AX, 68800LX, 88800
-
- o NCR 77C22, 77C22E, 77C22E+
-
- o Cirrus Logic CLGD5420, CLGD5422, CLGD5424, CLGD5426, CLGD5428,
- CLGD5429, CLGD5430, CLGD5434, CLGD6205, CLGD6215, CLGD6225,
- CLGD6235, CLGD6420
-
- o Compaq AVGA
-
- o OAK OTI067, OTI077
- 5.1. The X Window System 167
- _______________________________________________________________________
-
- o Avance Logic AL2101
-
- o MX MX68000, MX680010
-
- o Video 7/Headland Technologies HT216-32
-
- The following SVGA chipsets with accelerated features are also
- supported:
-
- o 8514/A (and true clones)
-
- o ATI Mach8, Mach32
-
- o Cirrus CLGD5420, CLGD5422, CLGD5424, CLGD5426, CLGD5428, CLGD5429,
- CLGD5430, CLGD5434, CLGD6205, CLGD6215, CLGD6225, CLGD6235
-
- o S3 86C911, 86C924, 86C801, 86C805, 86C805i, 86C928, 86C864, 86C964
-
- o Western Digital WD90C31, WD90C33
-
- o Weitek P9000
-
- o IIT AGX-014, AGX-015, AGX-016
-
- o Tseng ET4000/W32, ET4000/W32i, ET4000/W32p
-
- Video cards using these chipsets are supported on all bus types,
- including VLB and PCI.
- All of the above are supported in both 256 color and monochrome
- modes, with the exception of the Avance Logic, MX and Video 7
- chipsets, which are only supported in 256 color mode. If your
- video card has enough DRAM installed, many of the above chipsets are
- supported in 16 and 32 bits-per-pixel mode (specifically, some Mach32,
- P9000, S3 and Cirrus boards). The usual configuration is 8 bits per
- pixel (that is, 256 colors).
- The monochrome server also supports generic VGA cards, the Hercules
- monochrome card, the Hyundai HGC1280, Sigma LaserView, and Apollo
- monochrome cards. On the Compaq AVGA, only 64k of video memory is
- supported for the monochrome server, and the GVGA has not been tested
- with more than 64k.
- This list will undoubtedly expand as time passes. The release
- notes for the current version of XFree86 should contain the complete
- list of supported video chipsets.
- One problem faced by the XFree86 developers is that some video
- card manufacturers use non-standard mechanisms for determining clock
- frequencies used to drive the card. Some of these manufacturers
- either don't release specifications describing how to program the
- card, or they require developers to sign a non-disclosure statement
- to obtain the information. This would obviously restrict the free
- distribution of the XFree86 software, something that the XFree86
- 5.1. The X Window System 168
- _______________________________________________________________________
-
- development team is not willing to do. For a long time, this has
- been a problem with certain video cards manufactured by Diamond, but
- as of release 3.1 of XFree86, Diamond has started to work with the
- development team to release free drivers for these cards.
- The suggested setup for XFree86 under Linux is a 486 machine
- with at least 8 megabytes of RAM, and a video card with a chipset
- listed above. For optimal performance, we suggest using an
- accelerated card, such as an S3-chipset card. You should check the
- documentation for XFree86 and verify that your particular card is
- supported before taking the plunge and purchasing expensive hardware.
- Benchmark ratings comparisons for various video cards under XFree86
- are posted routinely to the USENET newsgroups comp.windows.x.i386unix
- and comp.os.linux.misc.
- As a side note, my personal Linux system is a 486DX2-66, 20
- megabytes of RAM, and is equipped with a VLB S3-864 chipset card with
- 2 megabytes of DRAM. I have run X benchmarks on this machine as well
- as on Sun Sparc IPX workstations. The Linux system is roughly 7 times
- faster than the Sparc IPX (for the curious, XFree86-3.1 under Linux,
- with this video card, runs at around 171,000 xstones; the Sparc IPX
- at around 24,000). In general, XFree86 on a Linux system with an
- accelerated SVGA card will give you much greater performance than that
- found on commercial UNIX workstations (which usually employ simple
- framebuffers for graphics).
- Your machine will need at least 4 megabytes of physical RAM, and
- 16 megabytes of virtual RAM (for example, 8 megs physical and 8
- megs swap). Remember that the more physical RAM that you have, the
- less that the system will swap to and from disk when memory is low.
- Because swapping is inherently slow (disks are very slow compared to
- memory), having 8 megabytes of RAM or more is necessary to run XFree86
- comfortably. A system with 4 megabytes of physical RAM could run much
- (up to 10 times) more slowly than one with 8 megs or more.
-
- 5.1.2 Installing XFree86
-
- The Linux binary distribution of XFree86 can be found on a number
- of FTP sites. On sunsite.unc.edu, it is found in the directory
- /pub/Linux/X11. (As of the time of this writing, the current version
- is 3.1; newer versions are released periodically).
- It's quite likely that you obtained XFree86 as part of a Linux
- distribution, in which case downloading the software separately is not
- necessary.
- If you are downloading XFree86 directly, This table lists the files
- in the XFree86-3.1 distribution.
- One of the following servers is required:
- 5.1. The X Window System 169
-
- File Description
-
- XF86-3.1-8514.tar.gz Server for 8514-based boards.
- XF86-3.1-AGX.tar.gz Server for AGX-based boards.
- XF86-3.1-Mach32.tar.gz Server for Mach32-based boards.
- XF86-3.1-Mach8.tar.gz Server for Mach8-based boards.
- XF86-3.1-Mono.tar.gz Server for monochrome video modes.
- XF86-3.1-P9000.tar.gz Server for P9000-based boards.
- XF86-3.1-S3.tar.gz Server for S3-based boards.
- XF86-3.1-SVGA.tar.gz Server for Super VGA-based boards.
- XF86-3.1-VGA16.tar.gz Server for VGA/EGA-based boards.
- XF86-3.1-W32.tar.gz Server for ET4000/W32-based boards.
-
- All of the following files are required:
-
- File Description
-
- XF86-3.1-bin.tar.gz The rest of the X11R6 binaries.
- XF86-3.1-cfg.tar.gz Config files for xdm, xinit and fs.
- XF86-3.1-doc.tar.gz Documentation and manpages.
- XF86-3.1-inc.tar.gz Include files.
- XF86-3.1-lib.tar.gz Shared X libraries and support files.
- XF86-3.1-fnt.tar.gz Basic fonts.
-
- The following files are optional:
-
- File Description
-
- XF86-3.1-ctrb.tar.gz Selected contrib programs.
- XF86-3.1-extra.tar.gz Extra XFree86 servers and binaries.
- XF86-3.1-lkit.tar.gz Server linkkit for customization.
- XF86-3.1-fnt75.tar.gz 75-dpi screen fonts.
- XF86-3.1-fnt100.tar.gz 100-dpi screen fonts.
- XF86-3.1-fntbig.tar.gz Large Kanji and other fonts.
- XF86-3.1-fntscl.tar.gz Scaled fonts (Speedo, Type1).
- XF86-3.1-man.tar.gz Manual pages.
- XF86-3.1-pex.tar.gz PEX binaries, includes and libraries.
- XF86-3.1-slib.tar.gz Static X libraries and support files.
- XF86-3.1-usrbin.tar.gz Daemons which reside in /usr/bin.
- XF86-3.1-xdmshdw.tar.gz Shadow password version of xdm.
-
- The XFree86 directory should contain README files and installation
- notes for the current version.
- All that is required to install XFree86 is to obtain the above
- files, create the directory /usr/X11R6 (as root), and unpack the files
- from /usr/X11R6 with a command such as:
-
- # gzip --dc XF86-3.1-bin.tar.gz | tar xfB --
-
-
- Remember that these tar files are packed relative to /usr/X11R6, so
- it's important to unpack the files there.
- After unpacking the files, you first need to link the file
- 5.1. The X Window System 170
- _______________________________________________________________________
-
- /usr/X11R6/bin/X to the server that you're using. For example, if you
- wish to use the SVGA color server, /usr/bin/X11/X should be linked
- to /usr/X11R6/bin/XF86_SVGA. If you wish to use the monochrome server
- instead, relink this file to XF86_MONO with the command
-
- # ln --sf /usr/X11R6/bin/XF86_MONO /usr/X11R6/bin/X
-
- The same holds true if you are using one of the other servers.
- If you aren't sure which server to use, or don't know your
- video card chipset, you can run the SuperProbe program found in
- /usr/X11R6/bin (included in the XF86-3.1-bin listed above). This
- program will attempt to determine your video chipset type and other
- information; write down its output for later reference.
- You need to make sure that /usr/X11R6/bin is on your path.
- This can be done by editing your system default /etc/profile or
- /etc/csh.login (based on the shell that you, or other users on your
- system, use). Or you can simply add the directory to your personal
- path by modifying /etc/.bashrc or /etc/.cshrc, based on your shell.
- You also need to make sure that /usr/X11R6/lib can be located by
- ld.so, the runtime linker. To do this, add the line
-
- /usr/X11R6/lib
-
- to the file /etc/ld.so.conf, and run /sbin/ldconfig, as root.
-
- 5.1.3 Configuring XFree86
-
- Setting up XFree86 is not difficult in most cases. However, if you
- happen to be using hardware for which drivers ar under development, or
- wish to obtain the best performance or resolution from an accelerated
- graphics card, configuring XFree86 can be somewhat time-consuming.
- In this section we will describe how to create and edit the
- XF86Config file, which configures the XFree86 server. In many cases
- it is best to start out with a ``basic'' XFree86 configuration,
- one which uses a low resolution, such as 640x480, which should be
- supported on all video cards and monitor types. Once you have
- XFree86 working at a lower, standard resolution, you can tweak the
- configuration to exploit the capabilities of your video hardware. The
- idea is that you want to know that XFree86 works at all on your
- system, and that something isn't wrong with your installation, before
- attempting the sometimes difficult task of setting up XFree86 for real
- use.
- In addition to the information listed here, you should read the
- following documentation:
-
- o The XFree86 documentation in /usr/X11R6/lib/X11/doc (contained
- within the XFree86-3.1-doc package). You should especially
- see the file README.Config, which is an XFree86 configuration
- tutorial.
- 5.1. The X Window System 171
- _______________________________________________________________________
-
- o Several video chipsets have separate README files in the above
- directory (such as README.Cirrus and README.S3). Read one of
- these if applicable.
-
- o The man page for XFree86.
-
- o The man page for XF86Config.
-
- o The man page for the particular server that you are using (such as
- XF86_SVGA or XF86_S3).
-
- The main XFree86 configuration file is
- /usr/X11R6/lib/X11/XF86Config. This file contains information
- on your mouse, video card parameters, and so on. The file
- XF86Config.eg is provided with the XFree86 distribution as an example.
- Copy this file to XF86Config and edit it as a starting point.
- The XF86Config man page explains the format of this file in detail.
- Read this man page now, if you have not done so already.
- We are going to present a sample XF86Config file, piece by piece.
- This file may not look exactly like the sample file included in the
- XFree86 distribution, but the structure is the same.
- ! Note that the XF86Config file format may change with each version
- of XFree86; this information is only valid for XFree86 version 3.1.
- ! Also, you should not simply copy the configuration file listed
- here to your own system and attempt to use it. Attempting to use
- a configuration file which doesn't correspond to your hardware could
- drive the monitor at a frequency which is too high for it; there have
- been reports of monitors (especially fixed-frequency monitors) being
- damaged or destroyed by using an incorrectly configured XF86Config
- file. The bottom line is this: Make absolutely sure that your
- XF86Config file corresponds to your hardware before you attempt to use
- it.
- Each section of the XF86Config file is surrounded by the pair of
- lines Section "<section-name>"...EndSection. The first part of the
- XF86Config file is Files, which looks like this:
-
- Section "Files"
- RgbPath "/usr/X11R6/lib/X11/rgb"
- FontPath "/usr/X11R6/lib/X11/fonts/misc/"
- FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
- EndSection
-
- The RgbPath line sets the path to the X11R6 RGB color database, and
- each FontPath line sets the path to a directory containing X11 fonts.
- In general you shouldn't have to modify these lines; just be sure that
- there is a FontPath entry for each font type that you have installed
- (that is, for each directory in /usr/X11R6/lib/X11/fonts).
- The next section is ServerFlags, which specifies several global
- flags for the server. In general this section is empty.
- 5.1. The X Window System 172
- _______________________________________________________________________
-
- Section "ServerFlags"
- # Uncomment this to cause a core dump at the spot where a signal is
- # received. This may leave the console in an unusable state, but may
- # provide a better stack trace in the core dump to aid in debugging
- # NoTrapSignals
- # ncomment this to disable the <Crtl><Alt><BS> server abort sequence
- # DontZap
- EndSection
-
- Here, we have all lines within the section commented out.
- The next section is Keyboard. This should be fairly intuitive.
-
- Section "Keyboard"
- Protocol "Standard"
- AutoRepeat 500 5
- ServerNumLock
- EndSection
-
- Other options are available as well---see the XF86Config file if you
- wish to modify the keyboard configuration. The above should work for
- most systems.
- The next section is Pointer which specifies parameters for the
- mouse device.
-
- Section "Pointer"
-
- Protocol "MouseSystems"
- Device "/dev/mouse"
-
- # Baudrate and SampleRate are only for some Logitech mice
- # BaudRate 9600
- # SampleRate 150
-
- # Emulate3Buttons is an option for 2-button Microsoft mice
- # Emulate3Buttons
-
- # ChordMiddle is an option for some 3-button Logitech mice
- # ChordMiddle
-
- EndSection
-
- The only options that you should concern yourself with now are
- Protocol and Device. Protocol specifies the mouse protocol that your
- mouse uses (not the make or brand of mouse). Valid types for Protocol
- (under Linux---there are other options available for other operating
- 5.1. The X Window System 173
- _______________________________________________________________________
-
- systems) are:
-
- o BusMouse
-
- o Logitech
-
- o Microsoft
-
- o MMSeries
-
- o Mouseman
-
- o MouseSystems
-
- o PS/2
-
- o MMHitTab
-
- BusMouse should be used for the Logitech busmouse. Note that older
- Logitech mice should use Logitech, but newer Logitech mice use either
- Microsoft or Mouseman protocols. This is a case in which the protocol
- doesn't necessarily have anything to do with the make of the mouse.
- Device specifies the device file where the mouse can be accessed.
- On most Linux systems, this is /dev/mouse. /dev/mouse is usually a
- link to the appropriate serial port (such as /dev/cua0) for serial
- mice, or to the appropriate busmouse device for busmice. At any rate,
- be sure that the device file listed in Device exists.
- The next section is Monitor, which specifies the characteristics of
- your monitor. As with other sections in the XF86Config file, there
- may be more than one Monitor section. This is useful if you have
- multiple monitors connected to a system, or use the same XF86Config
- file under multiple hardware configurations. In general, though, you
- will need a single Monitor section.
-
- Section "Monitor"
-
- Identifier "CTX 5468 NI"
-
- # These values are for a CTX 5468NI only! Don't attempt to use
- # them with your monitor (unless you have this model)
-
- Bandwidth 60
- HorizSync 30-38,47-50
- VertRefresh 50-90
-
- # Modes: Name dotclock horiz vert
-
- ModeLine "640x480" 25 640 664 760 800 480 491 493 525
-
- 5.1. The X Window System 174
- _______________________________________________________________________
-
- ModeLine "800x600" 36 800 824 896 1024 600 601 603 625
- ModeLine "1024x768" 65 1024 1088 1200 1328 768 783 789 818
-
- EndSection
-
- The Identifier line is used to give an arbitrary name to the
- Monitor entry. This can be any string; you will use it to refer to
- the Monitor entry later in the XF86Config file.
- they are listed below.
- HorizSync specifies the valid horizontal sync frequencies for your
- monitor, in kHz. If you have a multisync monitor, this can be a range
- of values (or several comma-separated ranges), as seen above. If
- you have a fixed-frequency monitor, this will be a list of discrete
- values, such as:
-
- HorizSync 31.5, 35.2, 37.9, 35.5, 48.95
-
- Your monitor manual should list these values in the technical
- specifications section. If you do not have this information
- available, you should either contact the manufacturer or vendor of
- your monitor to obtain it. There are other sources of information, as
- well;
- VertRefresh specifies the valid vertical refresh rates (or vertical
- synchronization frequencies) for your monitor, in Hz. Like HorizSync
- this can be a range or a list of discrete values; your monitor manual
- should list them.
- HorizSync and VertRefresh are used only to double-check that the
- monitor resolutions that you specify are in valid ranges. This is to
- reduce the chance that you will damage your monitor by attempting to
- drive it at a frequency for which it was not designed.
- The ModeLine directive is used to specify a single resolution mode
- for your monitor. The format of ModeLine is
-
- ModeLine <name> <clock> <horiz-values> <vert-values>
-
- <name> is an arbitrary string, which you will use to refer to the
- resolution mode later in the file. <dot-clock> is the driving clock
- frequency, or ``dot clock'' associated with the resolution mode. A
- dot clock is usually specified in MHz, and is the rate at which
- the video card must send pixels to the monitor at this resolution.
- <horiz-values> and <vert-values> are four numbers each which specify
- when the electron gun of the monitor should fire, and when the
- horizontal and vertical sync pulses fire during a sweep.
- How can you determine the ModeLine values for your monitor? The
- file VideoModes.doc, included with the XFree86 distribution, describes
- in detail how to determine these values for each resolution mode that
- your monitor supports. First of all, <clock> must correspond to one
- of the dot clock values that your video card can produce. Later in
- the XF86Config file you will specify these clocks; you can only use
- 5.1. The X Window System 175
- _______________________________________________________________________
-
- video modes which have a <clock> value supported by your video card.
- There are two files included in the XFree86 distribution which may
- include ModeLine data for your monitor. These files are modeDB.txt
- and Monitors, both of which are found in /usr/X11R6/lib/X11/doc.
- You should start with ModeLine values for the VESA standard monitor
- timings, which most monitors support. modeDB.txt includes timing
- values for VESA standard resolutions. In that file, you will see
- entries such as
-
- # 640x480@60Hz Non-Interlaced mode
- # Horizontal Sync = 31.5kHz
- # Timing: H=(0.95us, 3.81us, 1.59us), V=(0.35ms, 0.064ms, 1.02ms)
- #
- # name clock horizontal timing vertical timing flags
- "640x480" 25.175 640 664 760 800 480 491 493 525
-
- This is a VESA standard timing for a 640x480 video mode. It uses a
- dot clock of 25.175, which your video card must support to use this
- mode (more on this later). To include this entry in the XF86Config
- file, you'd use the line
-
- ModeLine "640x480" 25.175 640 664 760 800 480 491 493 525
-
- Note that the <name> argument to ModeLine (in this case "640x480") is
- an arbitrary string---the convention is to name the mode after the
- resolution, but <name> can technically be anything descriptive which
- describes the mode to you.
- For each ModeLine used the server will check that the
- specifications for the mode fall within the range of values specified
- with Bandwidth, HorizSync and VertRefresh. If they do not, the server
- will complain when you attempt to start up X (more on this later).
- For one thing, the dot clock used by the mode should not be greater
- than the value used for Bandwidth. (However, in many cases it is safe
- to use modes with a slightly higher bandwidth than your monitor can
- support.)
- If the VESA standard timings do not work for you (you'll know after
- trying to use them later) then the files modeDB.txt and Monitors
- include specific mode values for many monitor types. You can create
- ModeLine entries from the values found in those two files as well. Be
- sure to only use values for the specific model of monitor that you
- have. Note that many 14 and 15-inch monitors cannot support higher
- resolution modes, and often resolutions of 1024x768 at low dot clocks.
- This means that if you can't find high resolution modes for your
- monitor in these files, then your monitor probably does not support
- those resolution modes.
- If you are completely at a loss, and can't find working ModeLine
- values for your monitor, you can follow the instructions in the
- VideoModes.doc file included in the XFree86 distribution to generate
- ModeLine values from the specifications listed in your monitor's
- 5.1. The X Window System 176
- _______________________________________________________________________
-
- manual. While your mileage will certainly vary when attempting to
- generate ModeLine values by hand, this is a good place to look if you
- can't find the values that you need. VideoModes.doc also describes
- the format of the ModeLine directive and other aspects of the XFree86
- server in gory detail.
- Lastly, if you do obtain ModeLine values which are almost, but not
- quite, right, then it may be possible to simply modify the values
- slightly to obtain the desired result. For example, if while running
- XFree86 the image on the monitor is shifted slightly, or seems to
- ``roll'', you can follow the instructions in the VideoModes.doc file
- to try to fix these values. Also, be sure to check the knobs and
- controls on the monitor itself! In many cases it is necessary to
- change the horizontal or vertical size of the display after starting
- up XFree86 in order for the image to be centered and be of the
- appropriate size. Having these controls on the front of the monitor
- can certainly make life easier.
- ! You shouldn't use monitor timing values or ModeLine values for
- monitors other than the model that you own. If you attempt to drive
- the monitor at a frequency for which it was not designed, you can
- damage or even destroy it.
- The next section of the XF86Config file is Device, which specifies
- parameters for your video card. Here is an example.
-
- Section "Device"
- Identifier "#9 GXE 64"
-
- # Nothing yet; we fill in these values later.
-
- EndSection
-
- This section defines properties for a particular video card.
- Identifier is an arbitrary string describing the card; you will use
- this string to refer to the card later.
- Initially, you don't need to include anything in the Device
- section, except for Identifier. This is because we will be using the
- X server itself to probe for the properties of the video card, and
- entering them into the Device section later. The XFree86 server is
- capable of probing for the video chipset, clocks, RAMDAC, and amount
- of video RAM on the board.
- Before we do this, however, we need to finish writing the
- XF86Config file. The next section is Screen, which specifies the
- monitor/video card combination to use for a particular server.
-
- Section "Screen"
- Driver "Accel"
- Device "#9 GXE 64"
- Monitor "CTX 5468 NI"
- Subsection "Display"
- Depth 16
- Modes "1024x768" "800x600" "640x480"
- 5.1. The X Window System 177
- _______________________________________________________________________
-
- ViewPort 0 0
- Virtual 1024 768
- EndSubsection
- EndSection
-
- The Driver line specifies the X server that you will be using. The
- value values for Driver are:
-
- o Accel: For the XF86_S3, XF86_Mach32, XF86_Mach8, XF86_8514,
- XF86_P9000, XF86_AGX, and XF86_W32 servers;
-
- o SVGA: For the XF86_SVGA server;
-
- o VGA16: For the XF86_VGA16 server;
-
- o VGA2: For the XF86_Mono server;
-
- o Mono: For the non-VGA monochrome drivers in the XF86_Mono and
- XF86_VGA16 servers.
-
- You should be sure that /usr/X11R6/bin/X is a symbolic link to the
- server that you are using.
- The Device line specifies the Identifier of the Device section
- corresponding to the video card to use for this server. Above, we
- created a Device section with the line
-
- Identifier "#9 GXE 64"
-
- Therefore, we use "#9 GXE 64" on the Device line here.
- Similarly, the Monitor line specifies the name of the Monitor
- section to be used with this server. Here, "CTX 5468 NI" is the
- Identifier used in the Monitor section described above.
- Subsection "Display" defines several properties of the XFree86
- server corresponding to your monitor/video card combination. The
- XF86Config file describes all of these options in detail; most of them
- are icing on the cake and not necessary to get the system working.
- The options that you should know about are:
-
- o Depth. Defines the number of color planes---the number of bits
- per pixel. Usually, Depth is set to 8. For the VGA16 server, you
- would use a depth of 4, and for the monochrome server a depth of
- 1. If you are using an accelerated video card with enough memory
- to support more bits per pixel, you can set Depth to 16, 24, or
- 32. If you have problems with depths higher than 8, set it back
- to 8 and attempt to debug the problem later.
-
- o Modes. This is the list of video mode names which have been
- defined using the ModeLine directive in the Monitor section. In
- the above section, we used ModeLines named "1024x768", "800x600",
- and "640x48"0. Therefore, we use a Modes line of
- 5.1. The X Window System 178
- _______________________________________________________________________
-
- Modes "1024x768" "800x600" "640x480"
-
-
- The first mode listed on this line will be the default when
- XFree86 starts up. After XFree86 is running, you can switch
- between the modes listed here using the keys [ctrl]-[alt]-[numeric
- +] and [ctrl]-[alt]-[numeric -].
-
- It might be best, when initially configuring XFree86, to use lower
- resolution video modes, such as 640x480, which tend to work on
- most systems. Once you have the basic configuration working you
- can modify XF86Config to support higher resolutions.
-
- o Virtual. Sets the virtual desktop size. XFree86 has the ability
- to use any additional memory on your video card to extend the size
- of your desktop. When you move the mouse pointer to the edge
- of the display, the desktop will scroll, bringing the additional
- space into view. Therefore, even if you are running at a lower
- video resolution such as 800x600, you can set Virtual to the total
- resolution which your video card can support (a 1-megabyte video
- card can support 1024x768 at a depth of 8 bits per pixel; a
- 2-megabyte card 1280x1024 at depth 8, or 1024x768 at depth 16).
- Of course, the entire area will not be visible at once, but it can
- still be used.
-
- The Virtual feature is a nice way to utilize the memory of your
- video card, but it is rather limited. If you want to use a
- true virtual desktop, we suggest using fvwm, or a similar window
- manager, instead. fvwm allows you to have rather large virtual
- desktops (implemented by hiding windows, and so forth, instead of
- actually storing the entire desktop in video memory at once). See
- the man pages for fvwm for more details about this; most Linux
- systems use fvwm by default.
-
- o ViewPort. If you are using the Virtual option described above,
- ViewPort sets the coordinates of the upper-left-hand corner of the
- virtual desktop when XFree86 starts up. Virtual 0 0 is often
- used; if this is unspecified then the desktop is centered on the
- virtual desktop display (which may be undesirable to you).
-
- Many other options for this section exist; see the XF86Config man
- page for a complete description. In practice these other options are
- not necessary to get XFree86 initially working.
-
- 5.1.4 Filling in video card information
-
- Your XF86Config file is now ready to go, with the exception of
- complete information on the video card. What we're going to do is use
- the X server to probe for the rest of this information, and fill it
- into XF86Config.
- 5.1. The X Window System 179
- _______________________________________________________________________
-
- Instead of probing for this information with the X server,
- the XF86Config values for many cards are listed in the files
- modeDB.txt, AccelCards, and Devices. These files are all found
- in /usr/X11R6/lib/X11/doc. In addition, there are various README
- files for certain chipsets. You should look in these files for
- information on your video card, and use that information (the clock
- values, chipset type, and any options) in the XF86Config file. If any
- information is missing, you can probe for it as described here.
- In these examples we will demonstrate configuration for a #9 GXE 64
- video card, which uses the XF86_S3 chipset. This card happens to be
- the one which the author uses, but the discussion here applies to any
- video card.
- The first thing to do is to determine the video chipset used on the
- card. Running SuperProbe (found in /usr/X11R6/bin) will tell you this
- information, but you need to know the chipset name as it is known to
- the X server.
- To do this, run the command
-
- X -showconfig
-
- This will give the chipset names known to your X server. (The man
- pages for each X server list these as well.) For example, with the
- accelerated XF86_S3 server, we obtain:
-
- XFree86 Version 3.1 / X Window System
- (protocol Version 11, revision 0, vendor release 6000)
- Operating System: Linux
- Configured drivers:
- S3: accelerated server for S3 graphics adaptors (Patchlevel 0)
- mmio_928, s3_generic
-
- The valid chipset names for this server are mmio_928 and s3_generic.
- The XF86_S3 man page describes these chipsets and which videocards
- use them. In the case of the #9 GXE 64 video card, mmio_928 is
- appropriate.
- If you don't know which chipset to use, the X server can probe it
- for you. To do this, run the command
-
- X -probeonly > /tmp/x.out 2>&1
-
- if you use bash as your shell. If you use csh, try:
-
- X -probeonly &> /tmp/x.out
-
- You should run this command while the system is unloaded, that is,
- while no other activity is occurring on the system. This command will
- also probe for your video card dot clocks (as seen below), and system
- load can throw off this calculation.
- The output from the above (in /tmp/x.out should contain lines such
- as the following:
- 5.1. The X Window System 180
- _______________________________________________________________________
-
- XFree86 Version 3.1 / X Window System
- (protocol Version 11, revision 0, vendor release 6000)
- Operating System: Linux
- Configured drivers:
- S3: accelerated server for S3 graphics adaptors (Patch level 0)
- mmio_928, s3_generic
- Several lines deleted...
- (--) S3: card type: 386/486 localbus
- (--) S3: chipset: 864 rev. 0
- (--) S3: chipset driver: mmio_928
-
- Here, we see that the two valid chipsets for this server (in this
- case, XF86_S3) are mmio_928 and s3_generic. The server probed for and
- found a video card using the mmio_928 chipset.
- In the Device section of the XF86Config file, add a Chipset line,
- containing the name of the chipset as determined above. For example,
-
- Section "Device"
- # We already had Identifier here...
- Identifier "#9 GXE 64"
- # Add this line:
- Chipset "mmio_928"
- EndSection
-
- Now we need to determine the driving clock frequencies used by the
- video card. A driving clock frequency, or dot clock, is simply a rate
- at which the video card can send pixels to the monitor. As we have
- seen, each monitor resolution has a dot clock associated with it. Now
- we need to determine which dot clocks are made available by the video
- card.
- First you should look into the files (modeDB.txt, and so forth)
- mentioned above and see if your card's clocks are listed there. The
- dot clocks will usually be a list of 8 or 16 values, all of which are
- in MHz. For example, when looking at modeDB.txt we see an entry for
- the Cardinal ET4000 video board, which looks like this:
-
- # chip ram vir-
- tual clocks default-mode flags
- ET4000 1024 1024 768 25 28 38 36 40 45 32 0 "1024x768"
-
- As we can see, the dot clocks for this card are 25, 28, 38, 36, 40,
- 45, 32, and 0 MHz.
- In the Devices section of the XF86Config file, you should add a
- Clocks line containing the list of dot clocks for your card. For
- example, for the clocks above, we would add the line
-
- Clocks 25 28 38 36 40 45 32 0
-
- to the Devices section of the file, after Chipset. Note that the
- 5.1. The X Window System 181
- _______________________________________________________________________
-
- order of the clocks is important! Don't resort the list of clocks or
- remove duplicates.
- If you cannot find the dot clocks associated with your card, the X
- server can probe for these as well. Using the X -probeonly command
- described above, the output should contain lines which look like the
- following:
-
- (--
- ) S3: clocks: 25.18 28.32 38.02 36.15 40.33 45.32 32.00 00.00
-
- We could then add a Clocks line containing all of these values, as
- printed. You can use more than one Clocks line in XF86Config should
- all of the values (sometimes there are more than 8 clock values
- printed) not fit onto one line. Again, be sure to keep the list of
- clocks in order as they are printed.
- Be sure that there is no Clocks line (or that it is commented out)
- in the Devices section of the file when using X -probeonly to probe
- for the clocks. If there is a Clocks line present, the server will
- not probe for the clocks---it will use the values given in XF86Config.
- Note that some accelerated video boards use a programmable clock
- chip. (See the XF86_Accel man page for details; this generally
- applies to S3, AGX, and XGA-2 boards.) This chip essentially allows
- the X server to tell the card which dot clocks to use. If this is the
- case, then you may not find a list of dot clocks for the card in any
- of the above files. Or, the list of dot clocks printed when using X
- -probeonly will only contain one or two discrete clock values, with
- the rest being duplicates or zero.
- For boards which use a programmable clock chip, you would use a
- ClockChip line, instead of a Clocks line, in your XF86Config file.
- ClockChip gives the name of the clock chip as used by the video card;
- the man pages for each server describe what these are. For example,
- in the file README.S3, we see that several S3-864 video cards use an
- ``ICD2061A'' clock chip, and that we should use the line
-
- ClockChip "icd2061a"
-
- instead of Clocks in the XF86Config file. As with Clocks, this line
- should go in the Devices section, after Chipset.
- Similarly, some accelerated cards require you to specify the RAMDAC
- chip type in the XF86Config file, using a Ramdac line. The XF86_Accel
- man page describes this option. Usually, the X server will correctly
- probe for the RAMDAC.
- Some video card types require you to specify several options in the
- Devices section of XF86Config. These options will be described in
- the man page for your server, as well as in the various files (such
- as README.cirrus or README.S3. These options are enabled using the
- Option line. For example, the #9 GXE 64 card requires two options:
-
- Option "number_nine"
- Option "dac_8_bit"
- 5.1. The X Window System 182
- _______________________________________________________________________
-
- Usually, the X server will work without these options, but they are
- necessary to obtain the best performance. There are too many such
- options to list here, and they each depend on the particular video
- card being used. If you must use one of these options, fear not---the
- X server man pages and various files in /usr/X11R6/lib/X11/doc will
- tell you what they are.
- So, when you're finished, you should end up with a Devices section
- which looks something like this:
-
- Section "Device"
- # Device section for the #9 GXE 64 only !
- Identifier "#9 GXE 64"
- Chipset "mmio_928"
- ClockChip "icd2061a"
- Option "number_nine"
- Option "dac_8_bit"
- EndSection
-
- Most video cards will require a Clocks line, instead of ClockChip,
- as described above. The above Device entry is only valid for a
- particular video card, the #9 GXE 64. It is given here only as an
- example.
- There are other options that you can include in the Devices entry.
- Check the X server man pages for the gritty details, but the above
- should suffice for most systems.
-
- 5.1.5 Running XFree86
-
- With your XF86Config file configured, you're ready to fire up the X
- server and give it a spin. First, be sure that /usr/X11R6/bin is on
- your path.
- The command to start up XFree86 is
-
- startx
-
- This is a front-end to xinit (in case you're used to using xinit on
- other UNIX systems).
- This command will start the X server and run the commands found in
- the file .xinitrc in your home directory. .xinitrc is just a shell
- script containing X clients to run. If this file does not exist, the
- system default /usr/X11R6/lib/X11/xinit/xinitrc will be used.
- A standard .xinitrc file looks like this:
-
- #!/bin/sh
-
- xterm -fn 7x13bold -geometry 80x32+10+50 &
- xterm -fn 9x15bold -geometry 80x34+30-10 &
- oclock -geometry 70x70-7+7 &
- xsetroot -solid midnightblue &
- 5.1. The X Window System 183
- _______________________________________________________________________
-
- exec twm
-
- This script will start up two xterm clients, an oclock, and set the
- root window (background) color to midnightblue. It will then start up
- twm, the window manager. Note that twm is executed with the shell's
- exec statement; this causes the xinit process to be replaced with twm.
- Once the twm process exits, the X server will shut down. You can
- cause twm to exit by using the root menus: depress mouse button 1 on
- the desktop background---this will display a pop up menu which will
- allow you to Exit Twm.
- Be sure that the last command in .xinitrc is started with exec, and
- that it is not placed into the background (no ampersand on the end of
- the line). Otherwise the X server will shut down as soon as it has
- started the clients in the .xinitrc file.
- Alternately, you can exit X by pressing [ctrl]-[alt]-[backspace] in
- combination. This will kill the X server directly, exiting the window
- system.
- The above is a very, very simple desktop configuration. Many
- wonderful programs and configurations are available with a bit of work
- on your .xinitrc file. For example, the fvwm window manager will
- provide a virtual desktop, and you can customize colors, fonts, window
- sizes and positions, and so forth to your heart's content. Although
- the X Window System might appear to be simplistic at first, it is
- extremely powerful once you customize it for yourself.
- If you are new to the X Window System environment, we strongly
- suggest picking up a book such as The X Window System: A User's
- Guide. Using and configuring X is far too in-depth to cover here.
- See the man pages for xterm, oclock, and twm for clues on getting
- started.
-
- 5.1.6 Running into trouble
-
- Often, something will not be quite right when you initially fire up
- the X server. This is almost always caused by a problem in your
- XF86Config file. Usually, the monitor timing values are off, or the
- video card dot clocks set incorrectly. If your display seems to roll,
- or the edges are fuzzy, this is a clear indication that the monitor
- timing values or dot clocks are wrong. Also be sure that you are
- correctly specifying your video card chipset, as well as other options
- for the Device section of XF86Config. Be absolutely certain that you
- are using the right X server and that /usr/X11R6/bin/X is a symbolic
- link to this server.
- If all else fails, try to start X ``bare''; that is, use a command
- such as:
-
- X > /tmp/x.out 2>&1
-
- You can then kill the X server (using the [ctrl]-[alt]-[backspace] key
- combination) and examine the contents of /tmp/x.out. The X server
- will report any warnings or errors---for example, if your video card
- 5.2. Accessing MS-DOS Files 184
- _______________________________________________________________________
-
- doesn't have a dot clock corresponding to a mode supported by your
- monitor.
- The file VideoModes.doc included in the XFree86 distribution
- contains many hints for tweaking the values in your XF86Config file.
- Remember that you can use [ctrl]-[alt]-[numeric +] and [ctrl]-
- [alt]-[numeric -] to switch between the video modes listed on
- the Modes line of the Screen section of XF86Config. If the
- highest resolution mode doesn't look right, try switching to lower
- resolutions. This will let you know, at least, that those parts of
- your X configuration are working correctly.
- Also, check the vertical and horizontal size/hold knobs on your
- monitor. In many cases it is necessary to adjust these when starting
- up X. For example, if the display seems to be shifted slightly to one
- side, you can usually correct this using the monitor controls.
- The USENET newsgroup comp.windows.x.i386unix is devoted to
- discussions about XFree86. It might be a good idea to watch that
- newsgroup for postings relating to your video configuration---you
- might run across someone with the same problems as your own.
-
-
- 5.2 Accessing MS-DOS Files
-
- If, for some twisted and bizarre reason, you would have need to access
- files from MS-DOS, it's quite easily done under Linux.
- The usual way to access MS-DOS files is to mount an MS-DOS
- partition or floppy under Linux, allowing you to access the files
- directly through the filesystem. For example, if you have an MS-DOS
- floppy in /dev/fd0, the command
-
- # mount -t msdos /dev/fd0 /mnt
-
- will mount it under /mnt. See Section 4.6.2 for more information on
- mounting floppies.
- You can also mount an MS-DOS partition of your hard drive for
- access under Linux. If you have an MS-DOS partition on /dev/hda1, the
- command
-
- # mount -t msdos /dev/hda1 /mnt
-
- will mount it. Be sure to umount the partition when you're done using
- it. You can have your MS-DOS partitions automatically mounted at boot
- time if you include entries for them in /etc/fstab; see Section 4.8
- for details. For example, the following line in /etc/fstab will mount
- an MS-DOS partition on /dev/hda1 on the directory /dos.
-
- /dev/hda1 /dos msdos defaults
-
- The Mtools software may also be used to access MS-DOS files. For
- example, the commands mcd, mdir, and mcopy all behave as their MS-DOS
- counterparts. If you installed Mtools, there should be man pages
- available for these commands.
- 5.3. Networking with TCP/IP 185
- _______________________________________________________________________
-
- Accessing MS-DOS files is one thing; running MS-DOS programs from
- Linux is another. There is an MS-DOS Emulator under development for
- Linux; it is widely available, and even distributed with SLS. It
- can be retrieved from a number of locations, including the various
- Linux FTP sites (see Appendix C for details). The MS-DOS Emulator is
- reportedly powerful enough to run a number of applications, including
- Wordperfect, from Linux. However, Linux and MS-DOS are vastly
- different operating systems. The power of any MS-DOS emulator under
- UNIX is somewhat limited.
- In addition, work is underway on a Microsoft Windows emulator to
- run under X Windows. Watch the newsgroups and FTP sites for more
- information.
-
-
- 5.3 Networking with TCP/IP
-
- Linux supports a full implementation of the TCP/IP (Transport Control
- Protocol/Internet Protocol) networking protocols. TCP/IP has become
- the most successful mechanism for networking computers worldwide.
- With Linux and an Ethernet card, you can network your machine to a
- local area network, or (with the proper network connections), to the
- Internet---the worldwide TCP/IP network.
- Hooking up a small LAN of UNIX machines is easy. It simply
- requires an Ethernet controller in each machine and the appropriate
- Ethernet cables and other hardware. Or, if your business or
- university provides access to the Internet, you can easily add your
- Linux machine to this network.
- The current implementation of TCP/IP and related protocols for
- Linux is called ``NET-2''. This has no relationship to the so-called
- NET-2 release of BSD UNIX; instead, ``NET-2'' in this context means
- the second implementation of TCP/IP for Linux.
- Linux NET-2 also supports SLIP---Serial Line Internet Protocol.
- SLIP allows you to have dialup Internet access using a modem. If your
- business or university provides SLIP access, you can dial in to the
- SLIP server and put your machine on the Internet over the phone line.
- Alternately, if your Linux machine also has Ethernet access to the
- Internet, you can set up your Linux box as a SLIP server.
- For complete information on setting up TCP/IP under Linux, we
- encourage you to read the Linux NET-2 HOWTO, available via anonymous
- FTP from sunsite.unc.edu. The NET-2 HOWTO is a complete guide to
- configuring TCP/IP, including Ethernet and SLIP connections, under
- Linux. The Linux Ethernet HOWTO is a related document that describes
- configuration of various Ethernet card drivers for Linux. The Linux
- Network Administrator's Guide, from the Linux Documentation Project,
- is also available. See Appendix A for more information on these
- documents.
- Also of interest is the book TCP/IP Network Administration, by
- Craig Hunt. It contains complete information on using and configuring
- TCP/IP on UNIX systems.
- 5.3. Networking with TCP/IP 186
- _______________________________________________________________________
-
- 5.3.1 Hardware Requirements
-
- You can use Linux TCP/IP without any networking hardware at
- all---configuring ``loopback'' mode allows you to talk to yourself.
- This is necessary for some applications and games which use the
- ``loopback'' network device.
- However, if you want to use Linux with an Ethernet TCP/IP network,
- you need one of the following Ethernet cards: 3com 3c503, 3c503/16;
- Novell NE1000, NE2000; Western Digital WD8003, WD8013; Hewlett Packard
- HP27245, HP27247, HP27250.
- The following clones are reported to work: WD-80x3 clones: LANNET
- LEC-45; NE2000 clones: Alta Combo, Artisoft LANtastic AE-2, Asante
- Etherpak 2001/2003, D-Link Ethernet II, LTC E-NET/16 P/N 8300-200-002,
- Network Solutions HE-203, SVEC 4 Dimension Ethernet, 4-Dimension
- FD0490 EtherBoard 16, and D-Link DE-600, SMC Elite 16.
- See the Linux Ethernet HOWTO for a more complete discussion of
- Linux Ethernet hardware compatibility.
- Linux also supports SLIP, which allows you to use a modem to access
- the Internet over the phone line. In this case, you'll need a modem
- compatible with your SLIP server---most servers require a 14.4bps
- V.32bis modem.
-
- 5.3.2 Configuring TCP/IP on your system
-
- In this section we're going to discuss how to configure an Ethernet
- TCP/IP connection on your system. Note that this method should work
- for many systems, but certainly not all. This discussion should
- be enough to get you on the right path to configuring the network
- parameters of your machine, but there are numerous caveats and fine
- details not mentioned here. We direct you to the Linux Network
- Administrators' Guide and the NET-2-HOWTO for more information.(3)
- First of all, we assume that you have a Linux system that has the
- TCP/IP software installed. This includes basic clients such as telnet
- and ftp, system administration commands such as ifconfig and route
- (usually found in /etc), and networking configuration files (such as
- /etc/hosts). The other Linux-related networking documents described
- above explain how to go about installing the Linux networking software
- if you do not have it already.
- We also assume that your kernel has been configured and compiled
- with TCP/IP support enabled. See Section 4.7 for information on
- compiling your kernel. To enable networking, you must answer ``yes''
- to the appropriate questions during the make config step, and rebuild
- the kernel.
- Once this has been done, you must modify a number of configuration
- files used by NET-2. For the most part this is a simple procedure.
- Unfortunately, however, there is wide disagreement between Linux
-
- ----------------------------
- 3. Some of this information is adapted from the NET-2-HOWTO by Terry
- Dawson and Matt Welsh.
- 5.3. Networking with TCP/IP 187
- _______________________________________________________________________
-
- distributions as to where the various TCP/IP configuration files and
- support programs should go. Much of the time, they can be found in
- /etc, but in other cases may be found in /usr/etc, /usr/etc/inet, or
- other bizarre locations. In the worst case you'll have to use the
- find command to locate the files on your system. Also note that not
- all distributions keep the NET-2 configuration files and software in
- the same location---they may be spread across several directories.
- The following information applies primarily to Ethernet connec-
- tions. If you're planning to use SLIP, read this section to
- understand the concepts, and follow the SLIP-specific instructions in
- the following section.
-
- 5.3.2.1 Your network configuration
-
- Before you can configure TCP/IP, you need to determine the following
- information about your network setup. In most cases, your local
- network administrator can provide you with this information.
-
- o IP address. This is the unique machine address in dotted-decimal
- format. An example is 128.253.153.54. Your network admins will
- provide you with this number.
-
- If you're only configuring loopback mode (i.e. no SLIP, no
- ethernet card, just TCP/IP connections to your own machine) then
- your IP address is 127.0.0.1.
-
- o Your network mask (``netmask''). This is a dotted quad,
- similar to the IP address, which determines which portion of the
- IP address specifies the subnetwork number, and which portion
- specifies the host on that subnet. (If you're shaky on these
- TCP/IP networking terms, we suggest reading some introductory
- material on network administration.) The network mask is a
- pattern of bits, which when overlayed onto an address on your
- network, will tell you which subnet that address lives on. This
- is very important for routing, and if you find, for example, that
- you can happily talk to people outside your network, but not to
- some people within your network, there is a good chance that you
- have an incorrect mask specified.
-
- Your network administrators will have chosen the netmask when the
- network was designed, and therefore they should be able to supply
- you with the correct mask to use. Most networks are class C
- subnetworks which use 255.255.255.0 as their netmask. Other Class
- B networks use 255.255.0.0. The NET-2 code will automatically
- select a mask that assumes no subnetting as a default if you do
- not specify one.
-
- This applies as well to the loopback port. Since the loopback
- port's address is always 127.0.0.1, the netmask for this port is
- always 255.0.0.0. You can either specify this explicitly or rely
- 5.3. Networking with TCP/IP 188
- _______________________________________________________________________
-
- on the default mask.
-
- o Your network address. This is your IP address masked
- bitwise-ANDed the netmask. For example, if your netmask is
- 255.255.255.0, and your IP address is 128.253.154.32, your network
- address is 128.253.154.0. With a netmask of 255.255.0.0, this
- would be 128.253.0.0.
-
- If you're only using loopback, you don't have a network address.
-
- o Your broadcast address. The broadcast address is used to
- broadcast packets to every machine on your subnet. Therefore, if
- the host number of machines on your subnet is given by the last
- byte of the IP address (netmask 255.255.255.0), your broadcast
- address will be your network address ORed with 0.0.0.255.
-
- For example, if your IP address is 128.253.154.32, and
- your netmask is 255.255.255.0, your broadcast address is
- 128.253.154.255.
-
- Note that for historical reasons, some networks are setup to use
- the network address as the broadcast address, if you have any
- doubt, check with your network administrators. (In many cases,
- it will suffice to duplicate the network configuration of other
- machines on your subnet, substituting your own IP address, of
- course.)
-
- If you're only using loopback, you don't have a broadcast address.
-
- o Your gateway address. This is the address of the machine which
- is your ``gateway'' to the outside world (i.e. machines not
- on your subnet). In many cases the gateway machine has an IP
- address identical to yours but with a ``.1'' as its host address;
- e.g., if your IP address is 128.253.154.32, your gateway might be
- 128.253.154.1. Your network admins will provide you with the IP
- address of your gateway.
-
- In fact, you may have multiple gateways. A gateway is simply a
- machine that lives on two different networks (has IP addresses
- on different subnets), and routes packets between them. Many
- networks have a single gateway to ``the outside world'' (the
- network directly adjacent to your own), but in some cases you will
- have multiple gateways---one for each adjacent network.
-
- If you're only using loopback, you don't have a gateway address.
- The same is true if your network is isolated from all others.
-
- o Your nameserver address. Most machines on the net have a name
- server which translates hostnames into IP addresses for them.
- Your network admins will tell you the address of your name server.
- 5.3. Networking with TCP/IP 189
- _______________________________________________________________________
-
- You can also run a server on your own machine by running named,
- in which case the nameserver address is 127.0.0.1. Unless you
- absolutely must run your own name server, we suggest using the one
- provided to you on the network (if any). Configuration of named
- is another issue altogether; our priority at this point is to get
- you talking to the network. You can deal with name resolution
- issues later.
-
- If you're only using loopback, you don't have a nameserver
- address.
-
- SLIP users: You may or may not require any of the above
- information, except for a nameserver address. When using SLIP, your
- IP address is usually determined in one of two ways: Either (a)
- you have a ``static'' IP address, which is the same every time you
- connect to the network, or (b) you have a ``dynamic'' IP address,
- which is allocated from a pool available addresses when you connect to
- the server. In the following section on SLIP configuration this is
- covered in more detail.
- NET-2 supports full routing, multiple routes, subnetworking (at
- this stage on byte boundaries only), the whole nine yards. The
- above describes most basic TCP/IP configurations. Yours may be quite
- different: when in doubt, consult your local network gurus and check
- out the man pages for route and ifconfig. Configuring TCP/IP networks
- is very much beyond the scope of this book; the above should be enough
- to get most people started.
-
- 5.3.2.2 The networking rc files
-
- rc files are systemwide configuration scripts executed at boot time
- by init, which start up all of the basic system daemons (such as
- sendmail, cron, etc.) and configure things such as the network
- parameters, system hostname, and so on. rc files are usually found in
- the directory /etc/rc.d but on other systems may be in /etc.
- Here, we're going to describe the rc files used to configure
- TCP/IP. There are two of them: rc.inet1 and rc.inet2. rc.inet1 is
- used to configure the basic network parameters (such as IP addresses
- and routing information) and rc.inet2 fires up the TCP/IP daemons
- (telnetd, ftpd, and so forth).
- Many systems combine these two files into one, usually called
- rc.inet or rc.net. The names given to your rc files doesn't matter,
- as long as they perform the correct functions and are executed at boot
- time by init. To ensure this, you may need to edit /etc/inittab and
- uncomment lines to execute the appropriate rc file(s). In the worst
- case you will have to create the rc.inet1 and rc.inet2 files from
- scratch and add entries for them to /etc/inittab.
- As we said, rc.inet1 configures the basic network interface.
- This includes your IP and network address, and the routing table
- information for your network. The routing tables are used to route
- outgoing (and incoming) network datagrams to other machines. On most
- 5.3. Networking with TCP/IP 190
- _______________________________________________________________________
-
- simple configurations, you have three routes: One for sending packets
- to your own machine, another for sending packets to other machines on
- your network, and another for sending packets to machines outside of
- your network (through the gateway machine). Two programs are used to
- configure these parameters: ifconfig and route. Both of these are
- usually found in /etc.
- ifconfig is used for configuring the network device interface with
- the parameters that it requires to function, such as the IP address,
- network mask, broadcast address and the like. route is used to create
- and modify entries in the routing table.
- For most configurations, an rc.inet1 file that looks like the
- following should work. You will, of course, have to edit this for
- your own system. Do not use the sample IP and network addresses
- listed here for your own system; they correspond to an actual machine
- on the Internet.
-
- #!/bin/sh
- # This is /etc/rc.d/rc.inet1 -- Configure the TCP/IP interfaces
-
- # First, configure the loopback device
-
- HOSTNAME=`hostname`
-
- /etc/ifconfig lo 127.0.0.1 # uses default netmask 255.0.0.0
- /etc/route add 127.0.0.1 # a route to point to the loopback device
-
- # Next, configure the ethernet device. If you're only using
- # loopback or SLIP, comment out the rest of these lines.
-
- # Edit for your setup.
- IPADDR="128.253.154.32" # REPLACE with YOUR IP address
- NETMASK="255.255.255.0" # REPLACE with YOUR netmask
- NETWORK="128.253.154.0" # REPLACE with YOUR network address
- BROADCAST="128.253.154.255" # REPLACE with YOUR broadcast address,
- # if you have one. If not, leave blank
- # and edit below.
- GATEWAY="128.253.154.1" # REPLACE with YOUR gateway address!
-
- /etc/ifconfig eth0 ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST}
-
- # If you don't have a broadcast address, change the above line to:
- # /etc/ifconfig eth0 ${IPADDR} netmask ${NETMASK}
-
- /etc/route add ${NETWORK}
- 5.3. Networking with TCP/IP 191
- _______________________________________________________________________
-
-
- # The following is only necessary if you have a gateway; that is,
- # your network is connected to the outside world.
- /etc/route add default gw ${GATEWAY} metric 1
-
- # End of Ethernet Configuration
-
- Again, you may have to tweak this file somewhat to get it to work.
- The above should be sufficient for the majority of simple network
- configurations, but certainly not all.
- rc.inet2 starts up various servers used by the TCP/IP suite. The
- most important of these is inetd. inetd sits in the background and
- listens to various network ports. When a machine tries to make a
- connection to a certain port (for example, the incoming telnet port),
- inetd forks off a copy of the appropriate daemon for that port (in the
- case of the telnet port, inetd starts in.telnetd). This is simpler
- than running many separate, standalone daemons (e.g., individual
- copies of telnetd, ftpd, and so forth)---inetd starts up the daemons
- only when they are needed.
- syslogd is the system logging daemon---it accumulates log messages
- from various applications and stores them into log files based on
- the configuration information in /etc/syslogd.conf. routed is a
- server used to maintain dynamic routing information. When your system
- attempts to send packets to another network, it may require additional
- routing table entries in order to do so. routed takes care of
- manipulating the routing table without the need for user intervention.
- Our example rc.inet2, below, only starts up the bare minimum of
- servers. There are many other servers as well---many of which have to
- do with NFS configuration. When attempting to setup TCP/IP on your
- system, it's usually best to start with a minimal configuration and
- add more complex pieces (such as NFS) when you have things working.
- Note that in the below file, we assume that all of the network
- daemons are held in /etc. As usual, edit this for your own
- configuration.
-
- #! /bin/sh
- # Sample /etc/rc.d/rc.inet2
-
- # Start syslogd
- if [ -f /etc/syslogd ]
- then
- /etc/syslogd
- fi
-
- # Start inetd
- if [ -f /etc/inetd ]
- then
- /etc/inetd
- fi
- 5.3. Networking with TCP/IP 192
- _______________________________________________________________________
-
-
- # Start routed
- if [ -f /etc/routed ]
- then
- /etc/routed -q
- fi
-
- # Done!
-
- Among the various additional servers that you may want to start in
- rc.inet2 is named. named is a name server---it is responsible for
- translating (local) IP addresses to names, and vice versa. If you
- don't have a nameserver elsewhere on the network, or want to provide
- local machine names to other machines in your domain, it may be
- necessary to run named. (For most configurations it is not necessary,
- however.) named configuration is somewhat complex and requires
- planning; we refer interested readers to a good book on TCP/IP network
- administration.
-
- 5.3.2.3 /etc/hosts
-
- /etc/hosts contains a list of IP addresses and the hostnames that
- they correspond to. In general, /etc/hosts only contains entries
- for your local machine, and perhaps other ``important'' machines
- (such as your nameserver or gateway). Your local name server will
- provide address-to-name mappings for other machines on the network,
- transparently.
- For example, if your machine is loomer.vpizza.com with the IP
- address 128.253.154.32, your /etc/hosts would look like:
-
- 127.0.0.1 localhost
- 128.253.154.32 loomer.vpizza.com loomer
-
- If you're only using loopback, the only line in /etc/hosts should be
- for 127.0.0.1, with both localhost and your hostname after it.
-
- 5.3.2.4 /etc/networks
-
- The /etc/networks file lists the names and addresses of your own, and
- other, networks. It is used by the route command, and allows you to
- specify a network by name, should you so desire.
- Every network you wish to add a route to using the route command
- (generally called from rc.inet1---see above) must have an entry in
- /etc/networks.
- As an example,
-
- default 0.0.0.0 # default route - mandatory
- loopnet 127.0.0.0 # loopback network - mandatory
- mynet 128.253.154.0 # Modify for your own network address
- 5.3. Networking with TCP/IP 193
- _______________________________________________________________________
-
- 5.3.2.5 /etc/host.conf
-
- This file is used to specify how your system will resolve hostnames.
- It should contain the two lines:
-
- order hosts,bind
- multi on
-
- These lines tell the resolve libraries to first check the /etc/hosts
- file for any names to lookup, and then ask the nameserver (if one is
- present). The multi entry allows you to have multiple IP addresses
- for a given machine name in /etc/hosts.
-
- 5.3.2.6 /etc/resolv.conf
-
- This file configures the name resolver, specifying the address of
- your name server (if any) and your domain name. Your domain name
- is your fully-qualified hostname (if you're a registered machine on
- the Internet, for example), with the hostname chopped off. That is,
- if your full hostname is loomer.vpizza.com, your domain name is just
- vpizza.com.
- For example, if your machine is goober.norelco.com, and has a
- nameserver at the address 128.253.154.5, your /etc/resolv.conf would
- look like:
-
- domain norelco.com
- nameserver 127.253.154.5
-
- You can specify more than one nameserver---each must have a nameserver
- line of its own in resolv.conf.
-
- 5.3.2.7 Setting your hostname
-
- You should set your system hostname with the hostname command. This
- is usually called from /etc/rc or /etc/rc.local; simply search your
- system rc files to determine where it is invoked. For example, if
- your (full) hostname is loomer.vpizza.com, edit the appropriate rc
- file to execute the command:
-
- /bin/hostname loomer.vpizza.com
-
- Note that the hostname executable may not be found in /bin on your
- system.
-
- 5.3.2.8 Trying it out
-
- Once you have all of these files set up, you should be able to reboot
- your new kernel and attempt to use the network. There are many places
- where things can go wrong, so it's a good idea to test individual
- aspects of the network configuration (e.g., it's probably not a good
- 5.3. Networking with TCP/IP 194
- _______________________________________________________________________
-
- idea to test your network configuration by firing up Mosaic over a
- network-based X connection).
- You can use the netstat command to display your routing tables;
- this is usually the source of the most trouble. The netstat man page
- describes the exact syntax of this command in detail. In order to
- test network connectivity, we suggest using a client such as telnet
- to connect to machines both on your local subnetwork and external
- networks. This will help to narrow down the source of the problem.
- (For example, if you're unable to connect to local machines, but can
- connect to machines on other networks, more than likely there is a
- problem with your netmask and routing table configuration). You can
- also invoke the route command directly (as root) to play with the
- entries in your routing table.
- You should also test network connectivity by specifying IP
- addresses directly, instead of hostnames. For example, if you have
- problems with the command
-
- $ telnet shoop.vpizza.com
-
- the cause may be incorrect nameserver configuration. Try using the
- actual IP address of the machine in question; if that works, then you
- know that your basic network setup is (more than likely) correct, and
- the problem lies in your specification of the name server address.
- Debugging network configurations can be a difficult task, and we
- can't begin to cover it here. If you are unable to get help
- from a local guru we strongly suggest reading the Linux Network
- Administrators' Guide from the LDP.
-
- 5.3.3 SLIP Configuration
-
- SLIP (Serial Line Internet Protocol) allows you to use TCP/IP over a
- serial line, be that a phone line, with a dialup modem, or a leased
- asynchronous line of some sort. Of course, to use SLIP you'll need
- access to a dial-in SLIP server in your area. Many universities and
- businesses provide SLIP access for a modest fee.
- There are two major SLIP-related programs available---dip and
- slattach. Both of these programs are used to initiate a SLIP
- connection over a serial device. It is necessary to use one of these
- programs in order to enable SLIP---it will not suffice to dial up the
- SLIP server (with a communications program such as kermit) and issue
- ifconfig and route commands. This is because dip and slattach issue a
- special ioctl() system call to seize control of the serial device to
- be used as a SLIP interface.
- dip can be used to dial up a SLIP server, do some handshaking
- to login to the server (exchanging your username and password, for
- example) and then initate the SLIP connection over the open serial
- line. slattach, on the other hand, does very little other than
- grab the serial device for use by SLIP. It is useful if you have a
- permanent line to your SLIP server and no modem dialup or handshaking
- is necessary to initiate the connection. Most dialup SLIP users
- 5.3. Networking with TCP/IP 195
- _______________________________________________________________________
-
- should use dip, on the other hand.
- dip can also be used to configure your Linux system as a SLIP
- server, where other machines can dial into your own and connect to the
- network through a secondary Ethernet connection on your machine. See
- the documentation and man pages for dip for more information on this
- procedure.
- SLIP is quite unlike Ethernet, in that there are only two machines
- on the ``network''---the SLIP host (that's you) and the SLIP server.
- For this reason, SLIP is often referred to as a ``point-to-point''
- connection. A generalization of this idea, known as PPP (Point to
- Point Protocol) has also been implemented for Linux.
- When you initiate a connection to a SLIP server, the SLIP server
- will give you an IP address based on (usually) one of two methods.
- Some SLIP servers allocate ``static'' IP addresses---in which case
- your IP address will be the same every time you connect to the server.
- However, many SLIP servers allocate IP addresses dynamically---in
- which case you receive a different IP address each time you connect.
- In general, the SLIP server will print the values of your IP and
- gateway addresses when you connect. dip is capable of reading these
- values from the output of the SLIP server login session and using them
- to configure the SLIP device.
- Essentially, configuring a SLIP connection is just like configuring
- for loopback or ethernet. The main differences are discussed below.
- Read the previous section on configuring the basic TCP/IP files, and
- apply the changes described below.
-
- 5.3.3.1 Static IP address SLIP connections using dip
-
- If you are using a static-allocation SLIP server, you may want to
- include entries for your IP address and hostname in /etc/hosts.
- Also, configure these files listed in the above section: rc.inet2,
- host.conf, and resolv.conf.
- Also, configure rc.inet1, as described above. However, you only
- want to execute ifconfig and route commands for the loopback device.
- If you use dip to connect to the SLIP server, it will execute the
- appropriate ifconfig and route commands for the SLIP device for you.
- (If you're using slattach, on the other hand, you will need to include
- ifconfig/route commands in rc.inet1 for the SLIP device---see below.)
- dip should configure your routing tables appropriately for the SLIP
- connection when you connect. In some cases, however, dip's behavior
- may not be correct for your configuration, and you'll have to run
- ifconfig or route commands by hand after connecting to the server with
- dip (this is most easily done from within a shell script that runs
- dip and immediately executes the appropriate configuration commands).
- Your gateway is, in most cases, the address of the SLIP server. You
- may know this address before hand, or the gateway address will be
- printed by the SLIP server when you connect. Your dip chat script
- (described below) can obtain this information from the SLIP server.
- ifconfig may require use of the pointopoint argument, if dip
- doesn't configure the interface correctly. For example, if your
- 5.3. Networking with TCP/IP 196
- _______________________________________________________________________
-
- SLIP server address is 128.253.154.2, and your IP address is
- 128.253.154.32, you may need to run the command
-
- ifconfig sl0 128.253.154.32 pointopoint 128.253.154.2
-
- as root, after connecting with dip. The man pages for ifconfig will
- come in handy.
- Note that SLIP device names used with the ifconfig and route
- commands are sl0, sl1 and so on (as opposed to eth0, eth1, etc. for
- Ethernet devices).
- In Section 5.3.4, below, we explain how to configure dip to connect
- to the SLIP server.
-
- 5.3.3.2 Static IP address SLIP connections using slattach
-
- If you have a leased line or cable running directly to your SLIP
- server, then there is no need to use dip to initiate a connection.
- slattach can be used to configure the SLIP device instead.
- In this case, your /etc/rc.inet1 file should look something like
- the following:
-
- #!/bin/sh
- IPADDR="128.253.154.32" # Replace with your IP address
- REMADDR="128.253.154.2" # Replace with your SLIP server address
-
- # Modify the following for the appropriate serial device for
- # the SLIP connection:
- slattach -p cslip -s 19200 /dev/ttyS0
- /etc/ifconfig sl0 $IPADDR pointopoint $REMADDR up
- /etc/route add default gw $REMADDR
-
- slattach allocates the first unallocated SLIP device (sl0, sl1,
- etc.) to the serial line specified.
- Note that the first parameter to slattach is the SLIP protocol to
- use. At present the only valid values are slip and cslip. slip is
- regular SLIP, as you would expect, and cslip is SLIP with datagram
- header compression. In most cases you should use cslip; however, if
- you seem to be having problems with this, try slip.
- If you have more than one SLIP interface then you will have routing
- considerations to make. You will have to decide what routes to add,
- and those decisions can only be made on the basis of the actual layout
- of your network connections. A book on TCP/IP network configuration,
- as well as the man pages to route, will be of use.
-
- 5.3.3.3 Dynamic IP address SLIP connections using dip
-
- If your SLIP server allocates an IP address dynamically, then you
- certainly don't know your address in advance---therefore, you can't
- include an entry for it in /etc/hosts. (You should, however, include
- 5.3. Networking with TCP/IP 197
- _______________________________________________________________________
-
- an entry for your host with the loopback address, 127.0.0.1.)
- Many SLIP servers print your IP address (as well as the server's
- address) when you connect. For example, one type of SLIP server
- prints a string such as,
-
- Your IP address is 128.253.154.44.
- Server address is 128.253.154.2.
-
- dip can capture these numbers from the output of the server and use
- them to configure the SLIP device.
- See Section 5.3.3.1, above, for information on configuring your
- various TCP/IP files for use with SLIP. Below, we explain how to
- configure dip to connect to the SLIP server.
-
- 5.3.4 Using dip
-
- dip can simplify the process of connecting to a SLIP server, logging
- in, and configuring the SLIP device. Unless you have a leased line
- running to your SLIP server, dip is the way to go.
- To use dip, you'll need to write a ``chat script'' which contains
- a list of commands used to communicate with the SLIP server at login
- time. These commands can automatically send your username/password to
- the server, as well as get information on your IP address from the
- server.
- Here is an example dip chat script, for use with a dynamic IP
- address server. For static servers, you will need to set the
- variables $local and $remote to the values of your local IP address
- and server IP address, respectively, at the top of the script. See
- the dip man page for details.
-
- main:
- # Set Maximum Transfer Unit. This is the maximum size of packets
- # transmitted on the SLIP device. Many SLIP servers use either
- # 1500 or 1006; check with your network admins when in doubt.
- get $mtu 1500
-
- # Make the SLIP route the default route on your system.
- default
-
- # Set the desired serial port and speed.
- port cua03
- speed 38400
-
- # Reset the modem and terminal line. If this causes trouble
- # for you, comment it out.
- reset
-
- # Prepare for dialing. Replace the following with your
- 5.3. Networking with TCP/IP 198
- _______________________________________________________________________
-
- # modem initialization string.
- send ATT&C1&D2\\N3&Q5%M3%C1N1W1L1S48=7\r
- wait OK 2
- if $errlvl != 0 goto error
- # Dial the SLIP server
- dial 2546000
- if $errlvl != 0 goto error
- wait CONNECT 60
- if $errlvl != 0 goto error
-
- # We are connected. Login to the system.
- login:
- sleep 3
- send \r\n\r\n
- # Wait for the login prompt
- wait login: 10
- if $errlvl != 0 goto error
-
- # Send your username
- send USERNAME\n
-
- # Wait for password prompt
- wait ord: 5
- if $errlvl != 0 goto error
-
- # Send password.
- send PASSWORD\n
-
- # Wait for SLIP server ready prompt
- wait annex: 30
- if $errlvl != 0 goto error
-
- # Send commands to SLIP server to initate connection.
- send slip\n
- wait Annex 30
-
- # Get the remote IP address from the SLIP server. The
- # `get...remote' command reads text in the form xxx.xxx.xxx.xxx,
- # and assigns it to the variable given as the second argument
- # (here, $remote).
- get $remote remote
- if $errlvl != 0 goto error
- wait Your 30
-
- # Get local IP address from SLIP server, assign to variable
- # $local.
- get $local remote
- if $errlvl != 0 goto error
-
- # Fire up the SLIP connection
- 5.4. Networking with UUCP 199
- _______________________________________________________________________
-
- done:
- print CONNECTED to $remote at $rmtip
- print GATEWAY address $rmtip
- print LOCAL address $local
- mode SLIP
- goto exit
- error:
- print SLIP to $remote failed.
-
- exit:
-
- dip automatically executes ifconfig and route commands based on the
- values of the variables $local and $remote. Here, those variables are
- assigned using the get... remote command, which obtains text from the
- SLIP server and assigns it to the named variable.
- If the ifconfig and route commands that dip runs for you don't
- work, you can either run the correct commands in a shell script after
- executing dip, or modify the source for dip itself. Running dip with
- the -v option will print debugging information while the connection is
- being set up, which should help you to determine where things might be
- going awry.
- Now, in order to run dip and open the SLIP connection, you can use
- a command such as:
-
- /etc/dip/dip -v /etc/dip/mychat 2>&1
-
- Where the various dip files, and the chat script (mychat.dip), are
- stored in /etc/dip.
- The above discussion should be enough to get you well on your way
- to talking to the network, either via Ethernet or SLIP. Again, we
- strongly suggest looking into a book on TCP/IP network configuration,
- especially if your network has any special routing considerations,
- other than those mentioned here.
-
-
- 5.4 Networking with UUCP
-
- UUCP (UNIX-to-UNIX Copy) is an older mechanism used to transfer
- information between UNIX systems. Using UUCP, UNIX systems dial each
- other up (using a modem) and transfer mail messages, news articles,
- files, and so on. If you don't have TCP/IP or SLIP access, you can
- use UUCP to communicate with the world. Most of the mail and news
- software (see Sections 5.5 and 5.6) can be configured to use UUCP
- to transfer information to other machines. In fact, if there is an
- Internet site nearby, you can arrange to have Internet mail sent to
- your Linux machine via UUCP from that site.
- The Linux Network Administrator's Guide contains complete
- information on configuring and using UUCP under Linux. Also, the
- Linux UUCP HOWTO, available via anonymous FTP from sunsite.unc.edu,
- should be of help. Another source of information on UUCP is the
- book Managing UUCP and USENET, by Tim O'Reilly and Grace Todino. See
- 5.5. Electronic Mail 200
- _______________________________________________________________________
-
- Appendix A for more information.
-
-
- 5.5 Electronic Mail
-
- Like most UNIX systems, Linux provides a number of software packages
- for using electronic mail. E-mail on your system can either be local
- (that is, you only mail other users on your system), or networked
- (that is, you mail, using either TCP/IP or UUCP, users on other
- machines on a network). E-mail software usually consists of two
- parts: a mailer and a transport. The mailer is the user-level
- software which is used to actually compose and read e-mail messages.
- Popular mailers include elm and mailx. The transport is the low-level
- software which actually takes care of delivering the mail, either
- locally or remotely. The user never sees the transport software; they
- only interact with the mailer. However, as the system administrator,
- it is important to understand the concepts behind the transport
- software and how to configure it.
- The most popular transport software for Linux is Smail. This
- software is easy to configure, and is able to send both local and
- remote TCP/IP and UUCP e-mail. The more powerful sendmail transport
- is used on most UNIX systems, however, because of its complicated
- setup mechanism, many Linux systems don't use it.
- The Linux Mail HOWTO gives more information on the available mail
- software for Linux and how to configure it on your system. If you
- plan to send mail remotely, you'll need to understand either TCP/IP or
- UUCP, depending on how your machine is networked (see Sections 5.3 and
- 5.4). The UUCP and TCP/IP documents listed in Appendix A should be of
- help there.
- Most of the Linux mail software can be retrieved via anonymous FTP
- from sunsite.unc.edu in the directory /pub/Linux/system/Mail.
-
- 5.6 News and USENET
-
- Linux also provides a number of facilities for managing electronic
- news. You may choose to set up a local news server on your system,
- which will allow users to post ``articles'' to various ``newsgroups''
- on the system... a lively form of discussion. However, if you
- have access to a TCP/IP or UUCP network, then you will be able to
- participate in USENET---a worldwide network news service.
- There are two parts to the news software---the server and the
- client. The news server is the software which controls the newsgroups
- and handles delivering articles to other machines (if you are on a
- network). The news client, or newsreader, is the software which
- connects to the server to allow users to read and post news.
- There are several forms of news servers available for Linux.
- They all follow the same basic protocols and design. The two
- primary versions are ``C News'' and ``INN''. There are many types of
- newsreaders, as well, such as rn and tin. The choice of newsreader is
- more or less a matter of taste; all newsreaders should work equally
- 5.6. News and USENET 201
- _______________________________________________________________________
-
- well with different versions of the server software. That is, the
- newsreader is independent of the server software, and vice versa.
- If you only want to run news locally (that is, not as part of
- USENET), then you will need to run a server on your system, as well as
- install a newsreader for the users. The news server will store the
- articles in a directory such as /usr/spool/news, and the newsreader
- will be compiled to look in this directory for news articles.
- However, if you wish to run news over the network, there are
- several options open to you. TCP/IP network-based news uses a
- protocol known as NNTP (Network News Transmission Protocol). NNTP
- allows a newsreader to read news over the network, on a remote
- machine. NNTP also allows news servers to send articles to each other
- over the network---this is the software upon which USENET is based.
- Most businesses and universities have one or more NNTP servers set up
- to handle all of the USENET news for that site. Every other machine
- at the site runs an NNTP-based newsreader to read and post news over
- the network via the NNTP server. This means that only the NNTP server
- actually stores the news articles on disk.
- Here are some possible scenarios for news configuration.
-
- o You run news locally. That is, you have no network connection, or
- no desire to run news over the network. In this case, you need to
- run C News or INN on your machine, and install a newsreader to
- read the news locally.
-
- o You have access to a TCP/IP network and an NNTP server. If your
- organization has an NNTP news server set up, you can read and post
- news from your Linux machine by simply installing an NNTP-based
- newsreader. (Most newsreaders available can be configured to run
- locally or use NNTP). In this case, you do not need to install a
- news server or store news articles on your system. The newsreader
- will take care of reading and posting news over the network. Of
- course, you will need to have TCP/IP configured and have access to
- the network (see Section 5.3).
-
- o You have access to a TCP/IP network but have no NNTP server. In
- this case, you can run an NNTP news server on your Linux system.
- You can install either a local or an NNTP-based newsreader, and
- the server will store news articles on your system. In addition,
- you can configure the server to communicate with other NNTP news
- servers to transfer news articles.
-
- o You want to transfer news using UUCP. If you have UUCP access
- (see Section 5.4), you can participate in USENET as well. You
- will need to install a (local) news server and a news reader.
- In addition, you will need to configure your UUCP software to
- periodically transfer news articles to another nearby UUCP machine
- (known as your ``news feed''). UUCP does not use NNTP to transfer
- news; simply, UUCP provides its own mechanism for transferring
- news articles.
- 5.6. News and USENET 202
- _______________________________________________________________________
-
- The one downside of most news server and newsreader software is
- that it must be compiled by hand. Most of the news software does not
- use configuration files; instead, configuration options are determined
- at compile time.
- Most of the ``standard'' news software (available via anonymous
- FTP from ftp.uu.net in the directory /news) will compile out-of-the
- box on Linux. Necessary patches can be found on sunsite.unc.edu
- in /pub/Linux/system/Mail (which is, incidentally, also where mail
- software for Linux is found). Other news binaries for Linux may be
- found in this directory as well.
- For more information, refer to the Linux News HOWTO from
- sunsite.unc.edu in /pub/Linux/docs/HOWTO. Also, the LDP's Linux
- Network Administrator's Guide contains complete information on
- configuring news software for Linux. The book Managing UUCP and
- Usenet, by Tim O'Reilly and Grace Todino, is an excellent guide to
- setting up UUCP and news software. Also of interest is the USENET
- document ``How to become a USENET site,'' available from ftp.uu.net,
- in the directory /usenet/news.announce.newusers.
-
-
-
-
-
-
-
-
- Appendix A
-
-
-
-
- Sources of Linux Information
-
-
-
- This appendix contains information on various sources of Linux
- information, such as online documents, books, and more. Many of these
- documents are available either in printed form, or electronically from
- the Internet or BBS systems. Many Linux distributions also include
- much of this documentation in the distribution itself, so after you
- have installed Linux these files may be present on your system.
-
- A.1 Online Documents
-
- These documents should be available on any of the Linux FTP archive
- sites (see Appendix C for a list). If you do not have direct access
- to FTP, you may be able to locate these documents on other online
- services (such as CompuServe, local BBS's, and so on). If you have
- access to Internet mail, you can use the ftpmail service to receive
- these docucments. See Appendix C for more information.
- In particular, the following documents may be found on
- sunsite.unc.edu in the directory /pub/Linux/docs. Many sites mirror
- this directory; however, if you're unable to locate a mirror site near
- you, this is a good one to fall back on.
- You can also access Linux files and documentation using gopher.
- Just point your gopher client to port 70 on sunsite.unc.edu, and
- follow the menus to the Linux archive. This is a good way to browse
- Linux documentation interactively.
-
- The Linux Frequently Asked Questions List
- The Linux Frequently Asked Questions list, or ``FAQ'', is
- a list of common questions (and answers!) about Linux.
- This document is meant to provide a general source of
- information about Linux, common problems and solutions,
- and a list of other sources of information. Every new
- Linux user should read this document. It is available in
- a number of formats, including plain ASCII, PostScript,
- and Lout typesetter format. The Linux FAQ is maintained
- by Ian Jackson, ijackson@nyx.cs.du.edu.
-
-
-
- 203
- A.1. Online Documents 204
- _______________________________________________________________________
-
- The Linux META-FAQ
- The META-FAQ is a collection of ``metaquestions'' about
- Linux; that is, sources of information about the Linux
- system, and other general topics. It is a good
- starting place for the Internet user wishing to find more
- information about the system. It is maintained by Michael
- K. Johnson, johnsonm@sunsite.unc.edu.
-
- The Linux INFO-SHEET
- The Linux INFO-SHEET is a technical introduction to the
- Linux system. It gives an overview of the system's
- features and available software, and also provides a
- list of other sources of Linux information. The
- format and content is similar in nature to the META-FAQ;
- incidentally, it is also maintained by Michael K. Johnson.
-
- The Linux Software Map
- The Linux Software Map is a list of many applications
- available for Linux, where to get them, who maintains
- them, and so forth. It is far from complete---to
- compile a complete list of Linux software would be nearly
- impossible. However, it does include many of the most
- popular Linux software packages. If you can't find a
- particular application to suit your needs, the LSM is a
- good place to start. It is maintained by Lars Wirzenius,
- lars.wirzenius@helsinki.fi.
-
- The Linux HOWTO Index
- The Linux HOWTOs are a collection of ``how to'' documents,
- each describing in detail a certain aspect of the
- Linux system. They are maintained by Matt Welsh,
- mdw@sunsite.unc.edu. The HOWTO Index lists the HOWTO
- documents which are available (several of which are listed
- below).
-
- The Linux Installation HOWTO
- The Linux Installation HOWTO describes how to obtain
- and install a distribution of Linux, similar to the
- information presented in Chapter 2.
- The Linux Distribution HOWTO
- This document is a list of Linux distributions available
- via mail order and anonymous FTP. It also includes
- information on other Linux-related goodies and services.
- Appendix B contains a list of Linux vendors, many of which
- are listed in the Distribution HOWTO.
-
- The Linux XFree86 HOWTO
- This document describes how to install and configure the
- X Window System software for Linux. See the section
- ``5.1'' for more about the X Window System.
- A.2. Linux Documentation Project Manuals 205
- _______________________________________________________________________
-
- The Linux Mail, News, and UUCP HOWTOs
- These three HOWTO documents describe configuration and
- setup of electronic mail, news, and UUCP communications
- on a Linux system. Because these three subjects are
- often intertwined, you may wish to read all three of these
- HOWTOs together.
-
- The Linux Hardware HOWTO
- This HOWTO contains an extensive list of hardware
- supported by Linux. While this list is far from complete,
- it should give you a general picture of which hardware
- devices should be supported by the system.
-
- The Linux SCSI HOWTO
- The Linux SCSI HOWTO is a complete guide to configuration
- and usage of SCSI devices under Linux, such as hard
- drives, tape drives and CD-ROM.
-
- The Linux NET-2-HOWTO
- The Linux NET-2-HOWTO describes installation, setup, and
- configuration of the ``NET-2'' TCP/IP software under
- Linux, including SLIP. If you want to use TCP/IP on your
- Linux system, this document is a must read.
-
- The Linux Ethernet HOWTO
- Closely related to the NET-2-HOWTO, the Ethernet HOWTO
- describes the various Ethernet devices supported by Linux,
- and explains how to configure each of them for use by the
- Linux TCP/IP software.
- The Linux Printing HOWTO
- This document describes how to configure printing software
- under Linux, such as lpr. Configuration of printers and
- printing software under UNIX can be very confusing at
- times; this document sheds some light on the subject.
-
- Other online documents
- If you browse the docs subdirectory of any Linux FTP site,
- you'll see many other documents which are not listed here:
- A slew of FAQ's, interesting tidbits, and other important
- information. This miscellany is difficult to categorize
- here; if you don't see what you're looking for on the list
- above, just take a look at one of the Linux archive sites
- listed in Appendix C.
-
-
-
- A.2 Linux Documentation Project Manuals
-
- The Linux Documentation Project is working on developing a set of
- manuals and other documentation for Linux, including man pages. These
- manuals are in various stages of development, and any help revising
- A.3. Books and Other Published Works 206
- _______________________________________________________________________
-
- and updating them is greatly appreciated. If you have questions about
- the LDP, please contact Matt Welsh (mdw@sunsite.unc.edu).
- These books are available via anonymous FTP from a number of
- Linux archive sites, including sunsite.unc.edu in the directory
- /pub/Linux/docs/LDP. A number of commercial distributors are selling
- printed copies of these books; in the future, you may be able to find
- the LDP manuals on the shelves of your local bookstore.
-
- Linux Installation and Getting Started, by Matt Welsh
- A new user's guide for Linux, covering everything the new
- user needs to know to get started. You happen to hold
- this book in your hands.
-
- The Linux System Administrators' Guide, by Lars Wirzenius
- This is a complete guide to running and configuring a
- Linux system. There are many issues relating to systems
- administration which are specific to Linux, such as needs
- for supporting a user community, filesystem maintenance,
- backups, and more. This guide covers them all.
-
- The Linux Network Administrators' Guide, by Olaf Kirch
- An extensive and complete guide to networking under Linux,
- including TCP/IP, UUCP, SLIP, and more. This book is a
- very good read; it contains a wealth of information on
- many subjects, clarifying the many confusing aspects of
- network configuration.
- The Linux Kernel Hackers' Guide, by Michael Johnson
- The gritty details of kernel hacking and development under
- Linux. Linux is unique in that the complete kernel source
- is available. This book opens the doors to developers
- who wish to add or modify features within the kernel.
- This guide also contains comprehensive coverage of kernel
- concepts and conventions used by Linux.
-
-
-
- A.3 Books and Other Published Works
-
- Linux Journal is a monthly magazine for and about the Linux community,
- written and produced by a number of Linux developers and enthusiasts.
- It is distributed worldwide, and is an excellent way to keep in touch
- with the dynamics of the Linux world, especially if you don't have
- access to USENET news.
- At the time of this writing, subscriptions to Linux Journal
- are US$19/year in the United States, US$24 in Canada, and US$29
- elsewhere. To subscribe, or for more information, write to Linux
- Journal, PO Box 85867, Seattle, WA, 98145-1867, USA, or call +1
- 206 527-3385. Their FAX number is +1 206 527-2806, and e-mail
- address is linux@ssc.com. You can also find a Linux Journal
- FAQ and sample articles via anonymous FTP on sunsite.unc.edu in
- /pub/Linux/docs/linux-journal.
- A.3. Books and Other Published Works 207
- _______________________________________________________________________
-
- As we have said, not many books have been published dealing with
- Linux specifically. However, if you are new to the world of UNIX, or
- want more information than is presented here, we suggest that you take
- a look at the following books which are available.
-
- A.3.1 Using UNIX
-
- Title: Learning the UNIX Operating System
-
- Author: Grace Todino & John Strang
- Publisher: O'Reilly and Associates, 1987
- ISBN: 0-937175-16-1, $9.00
-
-
- A good introductory book on learning the UNIX operating
- system. Most of the information should be applicable to Linux
- as well. I suggest reading this book if you're new to UNIX
- and really want to get started with using your new system.
-
-
- Title: Learning the vi Editor
- Author: Linda Lamb
- Publisher: O'Reilly and Associates, 1990
-
- ISBN: 0-937175-67-6, $21.95
-
-
- This is a book about the vi editor, a powerful text editor
- found on every UNIX system in the world. It's often important
- to know and be able to use vi, because you won't always have
- access to a ``real'' editor such as Emacs.
-
- A.3.2 Systems Administration
-
- Title: Essential System Administration
- Author: AEleen Frisch
- Publisher: O'Reilly and Associates, 1991
-
- ISBN: 0-937175-80-3, $29.95
-
-
- From the O'Reilly and Associates Catalog, ``Like any other
- multi-user system, UNIX requires some care and feeding.
- Essential System Administration tells you how. This book
- strips away the myth and confusion surrounding this important
- topic and provides a compact, manageable introduction to the
- tasks faced by anyone responsible for a UNIX system.'' I
- couldn't have said it better myself.
-
- Title: TCP/IP Network Administration
- A.3. Books and Other Published Works 208
- _______________________________________________________________________
-
- Author: Craig Hunt
- Publisher: O'Reilly and Associates, 1990
-
- ISBN: 0-937175-82-X, $24.95
-
- A complete guide to setting up and running a TCP/IP network.
- While this book is not Linux-specific, roughly 90% of it is
- applicable to Linux. Coupled with the Linux NET-2-HOWTO and
- Linux Network Administrator's Guide, this is a great book
- discussing the concepts and technical details of managing
- TCP/IP.
-
-
- Title: Managing UUCP and Usenet
-
- Author: Tim O'Reilly and Grace Todino
- Publisher: O'Reilly and Associates, 1991
- ISBN: 0-937175-93-5, $24.95
-
-
- This book covers how to install and configure UUCP
- networking software, including configuration for USENET news.
- If you're at all interested in using UUCP or accessing USENET
- news on your system, this book is a must-read.
-
- A.3.3 The X Window System
-
- Title: The X Window System: A User's Guide
- Author: Niall Mansfield
-
- Publisher: Addison-Wesley
- ISBN: 0-201-51341-2, ??
-
-
- A complete tutorial and reference guide to using the
- X Window System. If you installed X windows on your Linux
- system, and want to know how to get the most out of it, you
- should read this book. Unlike some windowing systems, a lot
- of the power provided by X is not obvious at first sight.
-
- A.3.4 Programming
-
- Title: The C Programming Language
- Author: Brian Kernighan and Dennis Ritchie
-
- Publisher: Prentice-Hall, 1988
- ISBN: 0-13-110362-8, $25.00
-
-
- This book is a must-have for anyone wishing to do C
- programming on a UNIX system. (Or any system, for that
- A.3. Books and Other Published Works 209
- _______________________________________________________________________
-
- matter.) While this book is not obstensibly UNIX-specific, it
- is quite applicable to programming C under UNIX.
-
-
- Title: The Unix Programming Environment
- Author: Brian Kernighan and Bob Pike
-
- Publisher: Prentice-Hall, 1984
- ISBN: 0-13-937681-X, ??
-
-
- An overview to programming under the UNIX system. Covers
- all of the tools of the trade; a good read to get acquainted
- with the somewhat amorphous UNIX programming world.
-
-
- Title: Advanced Programming in the UNIX Environment
- Author: W. Richard Stevens
- Publisher: Addison-Wesley
- ISBN: 0-201-56317-7, $50.00
-
-
- This mighty tome contains everything that you need to know
- to program UNIX at the system level---file I/O, process
- control, interprocess communication, signals, terminal I/O,
- the works. This book focuses on various UNI standards,
- including POSIX.1, which Linux mostly adheres to.
-
-
- A.3.5 Kernel Hacking
-
- Title: The Design of the UNIX Operating System
- Author: Maurice J. Bach
- Publisher: Prentice-Hall, 1986
- ISBN: 0-13-201799-7, ??
-
-
- This book covers the algorithms and internals of the UNIX
- kernel. It is not specific to any particular kernel, although
- it does lean towards System V-isms. This is the best place
- to start if you want to understand the inner tickings of the
- Linux system.
-
-
- Title: The Magic Garden Explained
- Author: Berny Goodheart and James Cox
-
- Publisher: Prentice-Hall, 1994
- ISBN: 0-13-098138-9, ??
- A.3. Books and Other Published Works 210
- _______________________________________________________________________
-
- This book describes the System V R4 kernel in detail.
- Unlike Bach's book, which concentrates heavily on the
- algorithms which make the kernel tick, this book presents
- the SVR4 implementation on a more technical level. Although
- Linux and SVR4 are distant cousins, this book can give you
- much insight into the workings of an actual UNIX kernel
- implementation. This is also a very modern book on the UNIX
- kernel---published in 1994.
-
-
-
-
-
-
-
-
- Appendix B
-
-
-
-
- Linux Vendor List
-
-
-
- This appendix lists contact information for a number of vendors which
- sell Linux on diskette, tape, and CD-ROM. Many of them provide Linux
- documentation, support, and other services as well. This is by no
- means a complete listing; if you purchased this book in printed form,
- it's very possible that the vendor or publishing company also provides
- Linux software and services.
- The author makes no guarantee as to the accuracy of any of the
- information listed in this Appendix. This information is included
- here only as a service to readers, not as an advertisement for any
- particular organization.
-
- Fintronic Linux Systems
- 1360 Willow Rd., Suite 205
- Menlo Park, CA 94025 USA
- Tel: +1 415 325-4474
- Fax: +1 415 325-4908
- linux@fintronic.com
-
- InfoMagic, Inc.
- PO Box 30370
- Flagstaff, AZ 86003-0370 USA
- Tel: +1 800 800-6613, +1 602 526-9565
- Fax: +1 602 526-9573
- Orders@InfoMagic.com
-
- Lasermoon Ltd
- 2a Beaconsfield Road, Fareham,
- Hants, England. PO16 0QB.
- Tel: +44 (0) 329 826444.
- Fax: +44 (0) 329 825936.
- info@lasermoon.co.uk
-
-
- Linux Journal
- P.O. Box 85867
- Seattle, WA 98145-1867 USA
-
- 211
- A.3. Books and Other Published Works 212
- _______________________________________________________________________
-
- Tel: +1 206 527-3385
- Fax: +1 206 527-2806
- linux@ssc.com
-
- Linux Systems Labs
- 18300 Tara Drive
- Clinton Twp, MI 48036 USA
- Tel: +1 313 954-2829, +1 800 432-0556
- Fax: +1 313 954-2806
- info@lsl.com
-
- Morse Telecommunication, Inc.
- 26 East Park Avenue, Suite 240
- Long Beach, NY 11561 USA
- Tel: +1 800 60-MORSE
- Fax: +1 516 889-8665
- Linux@morse.net
-
- Nascent Technology
- Linux from Nascent CDROM
- P.O. Box 60669
- Sunnyvale CA 94088-0669 USA
- Tel: +1 408 737-9500
- Fax: +1 408 241-9390
- nascent@netcom.com
-
- Red Hat Software
- P.O. Box 4325
- Chapel Hill, NC 27515 USA
- Tel: +1 919 309-9560
- redhat@redhat.com
-
-
- SW Technology
- 251 West Renner Suite 229
- Richardson, TX 75080 USA
- Tel: +1 214 907-0871
- swt@netcom.com
-
- Takelap Systems Ltd.
- The Reddings, Court Robin Lane,
- Llangwm, Usk, Gwent, United Kingdom NP5 1ET.
- Tel: +44 (0)291 650357
- Fax: +44 (0)291 650500
- info@ddrive.demon.co.uk
-
- Trans-Ameritech Enterprises, Inc.
- 2342A Walsh Ave
- Santa Clara, CA 95051 USA
- Tel: +1 408 727-3883
- roman@trans-ameritech.com
- A.3. Books and Other Published Works 213
- _______________________________________________________________________
-
- Unifix Software GmbH
- Postfach 4918
- D-38039 Braunschweig
- Germany
- Tel: +49 (0)531 515161
- Fax: +49 (0)531 515162
-
- Yggdrasil Computing, Incorporated
- 4880 Stevens Creek Blvd., Suite 205
- San Jose, CA 95129-1034 USA
- Tel: +1 800 261-6630, +1 408 261-6630
- Fax: +1 408 261-6631
- info@yggdrasil.com
-
-
-
-
-
-
-
-
- Appendix C
-
-
-
-
- FTP Tutorial and Site List
-
-
-
- FTP (``File Transfer Protocol'') is the set of programs that are used
- for transferring files between systems on the Internet. Most UNIX,
- VMS, and MS-DOS systems on the Internet have a program called ftp
- which you use to transfer these files, and if you have Internet
- access, the best way to download the Linux software is by using ftp.
- This appendix covers basic ftp usage---of course, there are many more
- functions and uses of ftp than are given here.
- At the end of this appendix there is a listing of FTP sites where
- Linux software can be found. Also, if you don't have direct Internet
- access but are able to exchange electronic mail with the Internet,
- information on using the ftpmail service is included below.
- If you're using an MS-DOS, UNIX, or VMS system to download files
- from the Internet, then ftp is a command-driven program. However,
- there are other implementations of ftp out there, such as the
- Macintosh version (called Fetch) with a nice menu-driven interface,
- which is quite self-explanatory. Even if you're not using the
- command-driven version of ftp, the information given here should help.
-
-
- ftp can be used to both upload (send) or download (receive) files
- from other Internet sites. In most situations, you're going to be
- downloading software. On the Internet there are a large number of
- publicly-available FTP archive sites, machines which allow anyone to
- ftp to them and download free software. One such archive site is
- sunsite.unc.edu, which has a lot of Sun Microsystems software, and
- acts as one of the main Linux sites. In addition, FTP archive sites
- mirror software to each other---that is, software uploaded to one site
- will be automatically copied over to a number of other sites. So
- don't be surprised if you see the exact same files on many different
- archive sites.
-
- C.1 Starting ftp
-
- Note that in the example ``screens'' printed below I'm only showing
- the most important information, and what you see may differ. Also,
-
-
- 214
- C.2. Logging In 215
- _______________________________________________________________________
-
- commands in italics represent commands that you type; everything else
- is screen output.
- To start ftp and connect to a site, simply use the command
-
- ftp <hostname>
-
- where <hostname> is the name of the site you are connecting to. For
- example, to connect to the mythical site shoop.vpizza.com we can use
- the command
-
- ftp shoop.vpizza.com
-
-
- C.2 Logging In
-
- When ftp starts up we should see something like
-
- Connected to shoop.vpizza.com.
- 220 Shoop.vpizza.com FTPD ready at 15 Dec 1992 08:20:42 EDT
- Name (shoop.vpizza.com:mdw):
-
- Here, ftp is asking us to give the username that we want to login as
- on shoop.vpizza.com. The default here is mdw, which is my username
- on the system I'm using FTP from. Since I don't have an account
- on shoop.vpizza.com I can't login as myself. Instead, to access
- publicly-available software on an FTP site you login as anonymous, and
- give your Internet e-mail address (if you have one) as the password.
- So, we would type
-
- Name (shoop.vpizza.com:mdw): anonymous
- 331-Guest login ok, send e-mail address as password.
- Password: mdw@sunsite.unc.edu
- 230- Welcome to shoop.vpizza.com.
- 230- Virtual Pizza Delivery[tm]: Download pizza in 30 cycles
- or less
- 230- or you get it FREE!
- ftp>
-
- Of course, you should give your e-mail address, instead of mine,
- and it won't echo to the screen as you're typing it (since it's
- technically a ``password''). ftp should allow us to login and we'll
- be ready to download software.
-
- C.3 Poking Around
-
- Okay, we're in. ftp> is our prompt, and the ftp program is waiting
- for commands. There are a few basic commands you need to know about.
- First, the commands
-
- ls <file>
- C.3. Poking Around 216
- _______________________________________________________________________
-
- and
-
- dir <file>
-
- both give file listings (where <file> is an optional argument
- specifying a particular filename to list). The difference is that
- ls usually gives a short listing and dir gives a longer listing
- (that is, with more information on the sizes of the files, dates of
- modification, and so on).
- The command
-
- cd <directory>
-
- will move to the given directory (just like the cd command on UNIX or
- MS-DOS systems). You can use the command
-
- cdup
-
- to change to the parent directory(1).
- The command
-
- help <command>
-
- will give help on the given ftp <command> (such as ls or cd). If no
- command is specified, ftp will list all of the available commands.
- If we type dir at this point we'll see an initial directory listing
- of where we are.
-
- ftp> dir
- 200 PORT command successful.
- 150 Opening ASCII mode data connection for /bin/ls.
- total 1337
-
-
-
- dr-xr-xr-x 2 root wheel 512 Aug 13 13:55 bin
- drwxr-xr-x 2 root wheel 512 Aug 13 13:58 dev
- drwxr-xr-x 2 root wheel 512 Jan 25 17:35 etc
- drwxr-xr-x 19 root wheel 1024 Jan 27 21:39 pub
- drwxrwx-wx 4 root ftp-admi 1024 Feb 6 22:10 uploads
- drwxr-xr-x 3 root wheel 512 Mar 11 1992 usr
-
-
- 226 Transfer complete.
- 921 bytes received in 0.24 seconds (3.7 Kbytes/s)
- ftp>
-
- ----------------------------
- 1. The directory above the current one.
- C.4. Downloading files 217
- _______________________________________________________________________
-
- Each of these entries is a directory, not an individual file which
- we can download (specified by the d in the first column of the
- listing). On most FTP archive sites, the publicly available software
- is under the directory /pub, so let's go there.
-
- ftp> cd pub
- ftp> dir
- 200 PORT command successful.
- 150 ASCII data connection for /bin/ls (128.84.181.1,4525) (0
- bytes).
- total 846
-
-
-
- -rw-r--r-- 1 root staff 1433 Jul 12 1988 README
- -r--r--r-- 1 3807 staff 15586 May 13 1991 US-DOMAIN.TXT.2
- -rw-r--r-- 1 539 staff 52664 Feb 20 1991 altenergy.avail
- -r--r--r-- 1 65534 65534 56456 Dec 17 1990 ataxx.tar.Z
- -rw-r--r-- 1 root other 2013041 Jul 3 1991 gesyps.tar.Z
- -rw-r--r-- 1 432 staff 41831 Jan 30 1989 gnexe.arc
- -rw-rw-rw- 1 615 staff 50315 Apr 16 1992 linpack.tar.Z
- -r--r--r-- 1 root wheel 12168 Dec 25 1990 localtime.o
- -rw-r--r-- 1 root staff 7035 Aug 27 1986 manualslist.tblms
- drwxr-xr-x 2 2195 staff 512 Mar 10 00:48 mdw
- -rw-r--r-- 1 root staff 5593 Jul 19 1988 t.out.h
-
-
- 226 ASCII Transfer complete.
- 2443 bytes received in 0.35 seconds (6.8 Kbytes/s)
- ftp>
-
- Here we can see a number of (interesting?) files, one of which is
- called README, which we should download (most FTP sites have a README
- file in the /pub directory).
-
-
- C.4 Downloading files
-
- Before downloading files, there are a few things that you need to take
- care of.
-
- o Turn on hash mark printing. Hash marks are printed to the screen
- as files are being transferred; they let you know how far along
- the transfer is, and that your connection hasn't hung up (so you
- don't sit for 20 minutes, thinking that you're still downloading a
- C.4. Downloading files 218
- _______________________________________________________________________
-
- file). In general, a hash mark appears as a pound sign (#), and
- one is printed for every 1024 or 8192 bytes transferred, depending
- on your system.
-
- To turn on hash mark printing, give the command hash.
-
-
- ftp> hash
- Hash mark printing on (8192 bytes/hash mark).
- ftp>
-
-
- o Determine the type of file which you are downloading. As far as
- FTP is concerned, files come in two flavors: binary and text.
- Most of the files which you'll be downloading are binary files:
- that is, programs, compressed files, archive files, and so on.
- However, many files (such as READMEs and so on) are text files.
-
- Why does the file type matter? Only because on some systems (such
- as MS-DOS systems), certain characters in a text file, such as
- carriage returns, need to be converted so that the file will be
- readable. While transferring in binary mode, no conversion is
- done---the file is simply transferred byte after byte.
-
- The commands bin and ascii set the transfer mode to binary and
- text, respectively. When in doubt, always use binary mode to
- transfer files. If you try to transfer a binary file in text
- mode, you'll corrupt the file and it will be unusable. (This is
- one of the most common mistakes made when using FTP.) However, you
- can use text mode for plain text files (whose filenames often end
- in .txt).
-
- For our example, we're downloading the file README, which is most
- likely a text file, so we use the command
-
-
- ftp> ascii
- 200 Type set to A.
- ftp>
-
-
- o Set your local directory. Your local directory is the directory
- on your system where you want the downloaded files to end up.
- Whereas the cd command changes the remote directory (on the remote
- machine which you're FTPing to), the lcd command changes the local
- directory.
-
- For example, to set the local directory to /home/db/mdw/tmp, use
- the command
- C.5. Quitting FTP 219
- _______________________________________________________________________
-
- ftp> lcd /home/db/mdw/tmp
- Local directory now /home/db/mdw/tmp
- ftp>
-
-
- Now you're ready to actually download the file. The command
-
- get <remote-name> <local-name>
-
- is used for this, where <remote-name> is the name of the file on the
- remote machine, and <local-name> is the name that you wish to give the
- file on your local machine. The <local-name> argument is optional; by
- default, the local filename is the same as the remote one. However,
- if for example you're downloading the file README, and you already
- have a README in your local directory, you'll want to give a different
- <local-filename> so that the first one isn't overwritten.
- For our example, to download the file README, we simply use
-
- ftp> get README
- 200 PORT command successful.
- 150 ASCII data connection for README (128.84.181.1,4527) (1433
- bytes).
- #
- 226 ASCII Transfer complete.
- local: README remote: README
- 1493 bytes received in 0.03 seconds (49 Kbytes/s)
- ftp>
-
-
- C.5 Quitting FTP
-
- To end your FTP session, simply use the command
-
- quit
-
- The command
-
- close
-
- can be used to close the connection with the current remote FTP site;
- the open command can then be used to start a session with another site
- (without quitting the FTP program altogether).
-
- ftp> close
- 221 Goodbye.
- ftp> quit
- C.6. Using ftpmail 220
- _______________________________________________________________________
-
- C.6 Using ftpmail
-
- ftpmail is a service which allows you to obtain files from FTP archive
- sites via Internet electronic mail. If you don't have direct Internet
- access, but are able to send mail to the Internet (from a service such
- as CompuServe, for example), ftpmail is a good way to get files from
- FTP archive sites. Unfortunately, ftpmail can be slow, especially
- when sending large jobs. Before attempting to download large amounts
- of software using ftpmail, be sure that your mail spool will be able
- to handle the incoming traffic. Many systems keep quotas on incoming
- electronic mail, and may delete your account if your mail exceeds this
- quota. Just use common sense.
- sunsite.unc.edu, one of the major Linux FTP archive sites, is home
- to an ftpmail server. To use this service, send electronic mail to
-
- ftpmail@sunsite.unc.edu
-
- with a message body containing only the word:
-
- help
-
- This will send you back a list of ftpmail commands and a brief
- tutorial on using the system.
- For example, to get a listing of Linux files found on
- sunsite.unc.edu, send mail to the above address containing the text
-
- open sunsite.unc.edu
- cd /pub/Linux
- dir
- quit
-
- You may use the ftpmail service to connect to any FTP archive site;
- you are not limited to sunsite.unc.edu. The next section lists a
- number of Linux FTP archives.
-
-
- C.7 Linux FTP Site List
-
- Table C.1 is a listing of the most well-known FTP archive sites which
- carry the Linux software. Keep in mind that many other sites mirror
- these, and more than likely you'll run into Linux on a number of sites
- not on this list.
- tsx-11.mit.edu, sunsite.unc.edu, and nic.funet.fi are the ``home
- sites'' for the Linux software, where most of the new software is
- uploaded. Most of the other sites on the list mirror some combination
- of these three. To reduce network traffic, choose a site that is
- geographically closest to you.
- C.7. Linux FTP Site List 221
- _______________________________________________________________________
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sitename IP Address Directory
-
- tsx-11.mit.edu 18.172.1.2 /pub/linux
- sunsite.unc.edu 152.2.22.81 /pub/Linux
- nic.funet.fi 128.214.6.100 /pub/OS/Linux
- ftp.mcc.ac.uk 130.88.200.7 /pub/linux
- fgb1.fgb.mw.tu-muenchen.de 129.187.200.1 /pub/linux
- ftp.informatik.tu-muenchen.de 131.159.0.110 /pub/Linux
- ftp.dfv.rwth-aachen.de 137.226.4.105 /pub/linux
- ftp.informatik.rwth-aachen.de 137.226.112.172 /pub/Linux
- ftp.ibp.fr 132.227.60.2 /pub/linux
- kirk.bu.oz.au 131.244.1.1 /pub/OS/Linux
- ftp.uu.net 137.39.1.9 /systems/unix/linux
- wuarchive.wustl.edu 128.252.135.4 /systems/linux
- ftp.win.tue.nl 131.155.70.100 /pub/linux
- ftp.ibr.cs.tu-bs.de 134.169.34.15 /pub/os/linux
- ftp.denet.dk 129.142.6.74 /pub/OS/linux
-
- Table C.1: Linux FTP Sites
-
-
-
-
-
-
-
-
- Appendix D
-
-
-
-
- Linux BBS List
-
-
-
- Printed here is a list of bulletin board systems (BBS) which carry
- Linux software. Zane Healy (healyzh@holonet.net) maintains this list.
- If you know of or run a BBS which provides Linux software which isn't
- on this list, you should get in touch with him.
- The Linux community is no longer an Internet-only society. In
- fact, it is now estimated that the majority of Linux users don't have
- Internet access. Therefore, it is especially important that BBSs
- continue to provide and support Linux to users worldwide.
-
- D.1 United States
-
- Citrus Grove Public Access, 916-381-5822. ZyXEL 16.8/14.4 Sacramento,
- CA. Internet: citrus.sac.ca.us
- Higher Powered BBS, 408-737-7040. ? CA. RIME ->HIGHER
- hip-hop, 408-773-0768. 19.2k Sunnyvale, CA. USENET access
- hip-hop, 408-773-0768. 38.4k Sunnyvale, CA.
- Unix Online, 707-765-4631. 9600 Petaluma, CA. USENET access
- The Outer Rim, 805-252-6342. Santa Clarita, CA.
- Programmer's Exchange, 818-444-3507. El Monte, CA. Fidonet
- Programmer's Exchange, 818-579-9711. El Monte, CA.
- Micro Oasis, 510-895-5985. 14.4k San Leandro, CA.
- Test Engineering, 916-928-0504. Sacramento, CA.
- Slut Club, 813-975-2603. USR/DS 16.8k HST/14.4K Tampa, FL. Fidonet
- 1:377/42
- Lost City Atlantis, 904-727-9334. 14.4k Jacksonville, FL. FidoNet
- Aquired Knowledge, 305-720-3669. 14.4k v.32bis Ft. Lauderdale, FL.
- Internet, UUCP
- The Computer Mechanic, 813-544-9345. 14.4k v.32bis St. Petersburg,
- FL. Fidonet, Sailnet, MXBBSnet
- AVSync, 404-320-6202. Atlanta, GA.
- Information Overload, 404-471-1549. 19.2k ZyXEL Atlanta, GA. Fidonet
- 1:133/308
- Atlanta Radio Club, 404-850-0546. 9600 Atlanta, GA.
- Rebel BBS, 208-887-3937. 9600 Boise, ID.
- Rocky Mountain HUB, 208-232-3405. 38.4k Pocatello, ID. Fionet, SLNet,
-
-
- 222
- D.1. United States 223
- _______________________________________________________________________
-
- CinemaNet
- EchoMania, 618-233-1659. 14.4k HST Belleville, IL. Fidonet 1:2250/1,
- f'req LINUX
- UNIX USER, 708-879-8633. 14.4k Batavia, IL. USENET, Internet mail
- PBS BBS, 309-663-7675. 2400 Bloomington, IL.
- Third World, 217-356-9512. 9600 v.32 IL.
- Digital Underground, 812-941-9427. 14.4k v.32bis IN. USENET
- The OA Southern Star, 504-885-5928. New Orleans, LA. Fidonet
- 1:396/1
- Channel One, 617-354-8873. Boston, MA. RIME ->CHANNEL
- VWIS Linux Support BBS, 508-793-1570. 9600 Worcester, MA.
- WayStar BBS, 508-481-7147. 14.4k V.32bis USR/HST Marlborough, MA.
- Fidonet 1:333/14
- WayStar BBS, 508-481-7293. 14.4k V.32bis USR/HST Marlborough, MA.
- Fidonet 1:333/15
- WayStar BBS, 508-480-8371. 9600 V.32bis or 14.4k USR/HST Marlborough,
- MA. Fidonet 1:333/16
- Programmer's Center, 301-596-1180. 9600 Columbia, MD. RIME
- Brodmann's Place, 301-843-5732. 14.4k Waldorf, MD. RIME ->BRODMANN,
- Fidonet
- Main Frame, 301-654-2554. 9600 Gaithersburg, MD. RIME ->MAINFRAME
- 1 Zero Cybernet BBS, 301-589-4064. MD.
- WaterDeep BBS, 410-614-2190. 9600 v.32 Baltimore, MD.
- Harbor Heights BBS, 207-663-0391. 14.4k Boothbay Harbor, ME.
- Part-Time BBS, 612-544-5552. 14.4k v.32bis Plymouth, MN.
- The Sole Survivor, 314-846-2702. 14.4k v.32bis St. Louis, MO.
- WWIVnet, WWIVlink, etc
- MAC's Place, 919-891-1111. 16.8k, DS modem Dunn, NC. RIME ->MAC
- Digital Designs, 919-423-4216. 14.4k, 2400 Hope Mills, NC.
- Flite Line, 402-421-2434. Lincoln, NE. RIME ->FLITE, DS modem
- Legend, 402-438-2433. Lincoln, NE. DS modem
- MegaByte Mansion, 402-551-8681. 14.4 V,32bis Omaha, NE.
- Mycroft QNX, 201-858-3429. 14.4k NJ.
- Steve Leon's, 201-886-8041. 14.4k Cliffside Park, NJ.
- Dwight-Englewood BBS, 201-569-3543. 9600 v.42 Englewood, NJ. USENET
- The Mothership Cnection, 908-940-1012. 38.4k Franklin Park, NJ.
- The Laboratory, 212-927-4980. 16.8k HST, 14.4k v.32bis NY. FidoNet
- 1:278/707
- Valhalla, 516-321-6819. 14.4k HST v.32 Babylon, NY. Fidonet
- (1:107/255), UseNet (die.linet.org)
- Intermittent Connection, 503-344-9838. 14.4k HST v.32bis Eugene, OR.
- 1:152/35
- Horizon Systems, 216-899-1086. USR v.32 Westlake, OH.
- Horizon Systems, 216-899-1293. 2400 Westlake, OH.
- Centre Programmers Unit, 814-353-0566. 14.4k V.32bis/HST Bellefonte,
- PA.
- Allentown Technical, 215-432-5699. 9600 v.32/v.42bis Allentown, PA.
- WWIVNet 2578
- Tactical-Operations, 814-861-7637. 14.4k V32bis/V42bis State College,
- PA. Fidonet 1:129/226, tac_ops.UUCP
- D.2. Outside of the United States 224
- _______________________________________________________________________
-
- North Shore BBS, 713-251-9757. Houston, TX.
- The Annex, 512-575-1188. 9600 HST TX. Fidonet 1:3802/217
- The Annex, 512-575-0667. 2400 TX. Fidonet 1:3802/216
- Walt Fairs, 713-947-9866. Houston, TX. FidoNet 1:106/18
- CyberVille, 817-249-6261. 9600 TX. FidoNet 1:130/78
- splat-ooh, 512-578-2720. 14.4k Victoria, TX.
- splat-ooh, 512-578-5436. 14.4k Victoria, TX.
- alaree, 512-575-5554. 14.4k Victoria, TX.
- Ronin BBS, 214-938-2840. 14.4 HST/DS Waxahachie (Dallas), TX. RIME,
- Intelec, Smartnet, etc.
- VTBBS, 703-231-7498. Blacksburg, VA.
- MBT, 703-953-0640. Blacksburg, VA.
- NOVA, 703-323-3321. 9600 Annandale, VA. Fidonet 1:109/305
- Rem-Jem, 703-503-9410. 9600 Fairfax, VA.
- Enlightend, 703-370-9528. 14.4k Alexandria, VA. Fidonet 1:109/615
- My UnKnown BBS, 703-690-0669. 14.4k V.32bis VA. Fidonet 1:109/370
- Georgia Peach BBS, 804-727-0399. 14.4k Newport News, VA.
- Top Hat BBS, 206-244-9661. 14.4k WA. Fidonet 1:343/40
- victrola.sea.wa.us, 206-838-7456. 19.2k Federal Way, WA. USENET
-
-
-
- D.2 Outside of the United States
-
- Galaktische Archive, 0043-2228303804. 16.8 ZYX Wien, Austria.
- Fidonet 2:310/77 (19:00-7:00)
- Linux-Support-Oz, +61-2-418-8750. v.32bis 14.4k Sydney, NSW,
- Austrailia. Internet/Usenet, E-Mail/News
- 500cc Formula 1 BBS, +61-2-550-4317. V.32bis Sydney, NSW,
- Australia.
- Magic BBS, 403-569-2882. 14.4k HST/Telebit/MNP Calgary, AB, Canada.
- Internet/Usenet
- Logical Solutions, 299-9900 through 9911. 2400 AB, Canada.
- Logical Solutions, 299-9912, 299-9913. 14.4k Canada.
- Logical Solutions, 299-9914 through 9917. 16.8k v.32bis Canada.
- V.A.L.I.S., 403-478-1281. 14.4k v.32bis Edmonton, AB, Canada. USENET
- The Windsor Download, (519)-973-9330. v32bis 14.4 ON, Canada.
- r-node, 416-249-5366. 2400 Toronto, ON, Canada. USENET
- Synapse, 819-246-2344. 819-561-5268 Gatineau, QC, Canada.
- RIME->SYNAPSE
- Radio Free Nyongwa, 514-524-0829. v.32bis ZyXEL Montreal, QC, Canada.
- USENET, Fidonet
- DataComm1, +49.531.132-16. 14.4 HST Braunschweig, NDS, Germany. Fido
- 2:240/550, LinuxNet
- DataComm2, +49.531.132-17. 14.4 HST Braunschweig, NDS, Germany. Fido
- 2:240/551, LinuxNet
- Linux Server /Braukmann, +49.441.592-963. 16.8 ZYX Oldenburg, NDS,
- Germany. Fido 2:241/2012, LinuxNet
- MM's Spielebox, +49.5323.3515. 14.4 ZYX Clausthal-Zfd., NDS, Germany.
- Fido 2:241/3420
- MM's Spielebox, +49.5323.3516. 16.8 ZYX Clausthal-Zfd., NDS, Germany.
- D.2. Outside of the United States 225
- _______________________________________________________________________
-
- Fido 2:241/3421
- MM's Spielebox, +49.5323.3540. 9600 Clausthal-Zfd., NDS, Germany.
- Fido 2:241/3422
- Bit-Company / J. Bartz, +49.5323.2539. 16.8 ZYX MO Clausthal-Zfd.,
- NDS, Germany. Fido 2:241/3430
- Fractal Zone BBS /Maass, +49.721.863-066. 16.8 ZYX Karlsruhe, BW,
- Germany. Fido 2:241/7462
- Hipposoft /M. Junius, +49.241.875-090. 14.4 HST Aachen, NRW, Germany.
- Fido 2:242/6, 4:30-7,8-23:30
- UB-HOFF /A. Hoffmann, +49.203.584-155. 19.2 ZYX+ Duisburg, Germany.
- Fido 2:242/37
- FORMEL-Box, +49.4191.2846. 16.8 ZYX Kaltenkirchen, SHL, Germany.
- Fido 2:242/329, LinuxNet (6:00-20:00)
- BOX/2, +49.89.601-96-77. 16.8 ZYX Muenchen, BAY, Germany. Fido
- 2:246/147, info magic: LINUX (22-24,0:30-2,5-8)
- Die Box Passau 2+1, +49.851.555-96. 14.4 V32b Passau, BAY, Germany.
- Fido 2:246/200 (8:00-3:30)
- Die Box Passau Line 1, +49.851.753-789. 16.8 ZYX Passau, BAY,
- Germany. Fido 2:246/2000 (8:00-3:30)
- Die Box Passau Line 3, +49.851.732-73. 14.4 HST Passau, BAY, Germany.
- Fido 2:246/202 (5:00-3:30)
- Die Box Passau ISDN, +49.851.950-464. 38.4/64k V.110/X.75 Passau,
- BAY, Germany. Fido 2:246/201 (8:00-24:00,1:00-3:30)
- Public Domain Kiste, +49.30.686-62-50. 16.8 ZYX BLN, Germany. Fido
- 2:2403/17
- CS-Port / C. Schmidt, +49.30.491-34-18. 19.2 Z19 Berlin, BLN,
- Germany. Fido 2:2403/13
- BigBrother / R. Gmelch, +49.30.335-63-28. 16.8 Z16 Berlin, BLN,
- Germany. Fido 2:2403/36.4 (16-23:00)
- CRYSTAL BBS, +49.7152.240-86. 14.4 HST Leonberg, BW, Germany. Fido
- 2:2407/3, LinuxNet
- Echoblaster BBS #1, +49.7142.213-92. HST/V32b Bietigheim, BW,
- Germany. Fido 2:2407/4, LinuxNet (7-19,23-01h
- Echoblaster BBS #2, +49.7142.212-35. V32b Bietigheim, BW, Germany.
- Fido 2:2407/40, LinuxNet (20h-6h)
- LinuxServer / P. Berger, +49.711.756-275. 16.8 HST Stuttgart, BW,
- Germany. Fido 2:2407/34, LinuxNet (8:3-17:5,19-2)
- Rising Sun BBS, +49.7147.3845. 16.8 ZYX Sachsenheim, BW, Germany.
- Fido 2:2407/41, LinuxNet (5:30-2:30)
- bakunin.north.de, +49.421.870-532. 14.4 D 2800 Bremen, HB, Germany.
- kraehe@bakunin.north.de
- oytix.north.de, +49.421.396-57-62. ZYX HB, Germany.
- mike@oytix.north.de, login as gast
- Fiffis Inn BBS, +49-89-5701353. 14.4-19.2 Munich, Germany. FidoNet
- 2:246/69,Internet,USENET,LinuxNet
- The Field of Inverse Chaos, +358 0 506 1836. 14.4k v32bis/HST
- Helsinki, Finland. USENET; ichaos.nullnet.fi
- Modula BBS, +33-1 4043 0124. HST 14.4 v.32bis Paris, France.
- Modula BBS, +33-1 4530 1248. HST 14.4 V.32bis Paris, France.
- STDIN BBS, +33-72375139. v.32bis Lyon, Laurent Cas, France. FidoNet
- D.2. Outside of the United States 226
- _______________________________________________________________________
-
- 2:323/8
- Le Lien, +33-72089879. HST 14.4/V32bis Lyon, Pascal Valette, France.
- FidoNet 2:323/5
- Basil, +33-1-44670844. v.32bis Paris, Laurent Chemla, France.
- Cafard Naum, +33-51701632. v.32bis Nantes, Yann Dupont, France.
- DUBBS, +353-1-6789000. 19.2 ZyXEL Dublin, Ireland. Fidonet 2:263/167
- Galway Online, +353-91-27454. 14.4k v32b Galway, Ireland. RIME,
- @iol.ie
- Nemesis' Dungeon, +353-1-324755 or 326900. 14.4k v32bis Dublin,
- Ireland. Fidonet 2:263/150
- nonsolosoftware, +39 51 6140772. v.32bis, v.42bis Italy. Fidonet
- 2:332/407
- nonsolosoftware, +39 51 432904. ZyXEL 19.2k Italy. Fidonet 2:332/417
- Advanced Systems, +64-9-379-3365. ZyXEL 16.8k Auckland, New Zealand.
- Singet, INTLnet, Fidonet
- Thunderball Cave, 472567018. Norway. RIME ->CAVE
- DownTown BBS Lelystad, +31-3200-48852. 14.4k Lelystad, Netherlands.
- Fido 2:512/155, UUCP
- MUGNET Intl-Cistron BBS, +31-1720-42580. 38.4k Alphen a/d Rijn,
- Netherlands. UUCP
- The Controversy, (65)560-6040. 14.4k V.32bis/HST Singapore. Fidonet
- 6:600/201
- Pats System, +27-12-333-2049. 14.4k v.32bis/HST Pretoria, South
- Africa. Fidonet 5:71-1/36
- Gunship BBS, +46-31-693306. 14.4k HST DS Gothenburg Sweden.
- Baboon BBS, +41-62-511726. 19.2k Switzerland. Fido 2:301/580 and
- /581
- The Purple Tentacle, +44-734-590990. HST/V32bis Reading, UK. Fidonet
- 2:252/305
- A6 BBS, +44-582-460273. 14.4k Herts, UK. Fidonet 2:440/111
- On the Beach, +444-273-600996. 14.4k/16.8k Brighton, UK. Fidonet
- 2:441/122
-
-
-
-
-
-
-
-
- Appendix E
-
-
-
-
- The GNU General Public License
-
-
-
- Printed below is the GNU General Public License (the GPL or copyleft),
- under which Linux is licensed. It is reproduced here to clear up
- some of the confusion about Linux's copyright status---Linux is not
- shareware, and it is not in the public domain. The bulk of the Linux
- kernel is copyright Oc1993 by Linus Torvalds, and other software and
- parts of the kernel are copyrighted by their authors. Thus, Linux is
- copyrighted, however, you may redistribute it under the terms of the
- GPL printed below.
-
-
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
- Copyright cO1989, 1991 Free Software Foundation, Inc. 675 Mass Ave,
- Cambridge, MA 02139, USA Everyone is permitted to copy and distribute
- verbatim copies of this license document, but changing it is not
- allowed.
-
- E.1 Preamble
-
- The licenses for most software are designed to take away your freedom
- to share and change it. By contrast, the GNU General Public
- License is intended to guarantee your freedom to share and change
- free software--to make sure the software is free for all its users.
- This General Public License applies to most of the Free Software
- Foundation's software and to any other program whose authors commit to
- using it. (Some other Free Software Foundation software is covered by
- the GNU Library General Public License instead.) You can apply it to
- your programs, too.
- When we speak of free software, we are referring to freedom, not
- price. Our General Public Licenses are designed to make sure that you
- have the freedom to distribute copies of free software (and charge for
- this service if you wish), that you receive source code or can get it
- if you want it, that you can change the software or use pieces of it
- in new free programs; and that you know you can do these things.
- To protect your rights, we need to make restrictions that forbid
-
-
- 227
- E.2.Terms and Conditions for Copying, Distribution, and Modification228
- _______________________________________________________________________
-
- anyone to deny you these rights or to ask you to surrender the rights.
- These restrictions translate to certain responsibilities for you if
- you distribute copies of the software, or if you modify it.
- For example, if you distribute copies of such a program, whether
- gratis or for a fee, you must give the recipients all the rights that
- you have. You must make sure that they, too, receive or can get the
- source code. And you must show them these terms so they know their
- rights.
- We protect your rights with two steps: (1) copyright the software,
- and (2) offer you this license which gives you legal permission to
- copy, distribute and/or modify the software.
- Also, for each author's protection and ours, we want to make
- certain that everyone understands that there is no warranty for this
- free software. If the software is modified by someone else and passed
- on, we want its recipients to know that what they have is not the
- original, so that any problems introduced by others will not reflect
- on the original authors' reputations.
- Finally, any free program is threatened constantly by software
- patents. We wish to avoid the danger that redistributors of a free
- program will individually obtain patent licenses, in effect making the
- program proprietary. To prevent this, we have made it clear that any
- patent must be licensed for everyone's free use or not licensed at
- all.
- The precise terms and conditions for copying, distribution and
- modification follow.
-
-
- E.2 Terms and Conditions for Copying, Distribution, and Modification
-
- 0. This License applies to any program or other work which contains
- a notice placed by the copyright holder saying it may be
- distributed under the terms of this General Public License. The
- ``Program'', below, refers to any such program or work, and
- a ``work based on the Program'' means either the Program or
- any derivative work under copyright law: that is to say, a
- work containing the Program or a portion of it, either verbatim
- or with modifications and/or translated into another language.
- (Hereinafter, translation is included without limitation in the
- term ``modification''.) Each licensee is addressed as ``you''.
-
- Activities other than copying, distribution and modification are
- not covered by this License; they are outside its scope. The act
- of running the Program is not restricted, and the output from the
- Program is covered only if its contents constitute a work based
- on the Program (independent of having been made by running the
- Program). Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
- source code as you receive it, in any medium, provided that
- you conspicuously and appropriately publish on each copy an
- appropriate copyright notice and disclaimer of warranty; keep
- E.2.Terms and Conditions for Copying, Distribution, and Modification229
- _______________________________________________________________________
-
- intact all the notices that refer to this License and to the
- absence of any warranty; and give any other recipients of the
- Program a copy of this License along with the Program.
-
- You may charge a fee for the physical act of transferring a copy,
- and you may at your option offer warranty protection in exchange
- for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
- of it, thus forming a work based on the Program, and copy and
- distribute such modifications or work under the terms of Section 1
- above, provided that you also meet all of these conditions:
-
-
- a. You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b. You must cause any work that you distribute or publish, that
- in whole or in part contains or is derived from the Program or
- any part thereof, to be licensed as a whole at no charge to
- all third parties under the terms of this License.
-
- c. If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display
- an announcement including an appropriate copyright notice and
- a notice that there is no warranty (or else, saying that
- you provide a warranty) and that users may redistribute the
- program under these conditions, and telling the user how to
- view a copy of this License. (Exception: if the Program
- itself is interactive but does not normally print such an
- announcement, your work based on the Program is not required
- to print an announcement.)
-
-
- These requirements apply to the modified work as a whole. If
- identifiable sections of that work are not derived from the
- Program, and can be reasonably considered independent and separate
- works in themselves, then this License, and its terms, do not
- apply to those sections when you distribute them as separate
- works. But when you distribute the same sections as part of a
- whole which is a work based on the Program, the distribution of
- the whole must be on the terms of this License, whose permissions
- for other licensees extend to the entire whole, and thus to each
- and every part regardless of who wrote it.
-
- Thus, it is not the intent of this section to claim rights or
- contest your rights to work written entirely by you; rather, the
- intent is to exercise the right to control the distribution of
- derivative or collective works based on the Program.
- E.2.Terms and Conditions for Copying, Distribution, and Modification230
- _______________________________________________________________________
-
- In addition, mere aggregation of another work not based on the
- Program with the Program (or with a work based on the Program) on
- a volume of a storage or distribution medium does not bring the
- other work under the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
- under Section 2) in object code or executable form under the terms
- of Sections 1 and 2 above provided that you also do one of the
- following:
-
-
- a. Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of
- Sections 1 and 2 above on a medium customarily used for
- software interchange; or,
-
- b. Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a
- medium customarily used for software interchange; or,
-
- c. Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with
- such an offer, in accord with Subsection b above.)
-
-
- The source code for a work means the preferred form of the work
- for making modifications to it. For an executable work, complete
- source code means all the source code for all modules it contains,
- plus any associated interface definition files, plus the scripts
- used to control compilation and installation of the executable.
- However, as a special exception, the source code distributed
- need not include anything that is normally distributed (in either
- source or binary form) with the major components (compiler,
- kernel, and so on) of the operating system on which the executable
- runs, unless that component itself accompanies the executable.
-
- If distribution of executable or object code is made by offering
- access to copy from a designated place, then offering equivalent
- access to copy the source code from the same place counts as
- distribution of the source code, even though third parties are not
- compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
- except as expressly provided under this License. Any attempt
- otherwise to copy, modify, sublicense or distribute the Program
- E.2.Terms and Conditions for Copying, Distribution, and Modification231
- _______________________________________________________________________
-
- is void, and will automatically terminate your rights under
- this License. However, parties who have received copies, or
- rights, from you under this License will not have their licenses
- terminated so long as such parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have
- not signed it. However, nothing else grants you permission to
- modify or distribute the Program or its derivative works. These
- actions are prohibited by law if you do not accept this License.
- Therefore, by modifying or distributing the Program (or any work
- based on the Program), you indicate your acceptance of this
- License to do so, and all its terms and conditions for copying,
- distributing or modifying the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on
- the Program), the recipient automatically receives a license from
- the original licensor to copy, distribute or modify the Program
- subject to these terms and conditions. You may not impose any
- further restrictions on the recipients' exercise of the rights
- granted herein. You are not responsible for enforcing compliance
- by third parties to this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
- infringement or for any other reason (not limited to patent
- issues), conditions are imposed on you (whether by court order,
- agreement or otherwise) that contradict the conditions of this
- License, they do not excuse you from the conditions of this
- License. If you cannot distribute so as to satisfy simultaneously
- your obligations under this License and any other pertinent
- obligations, then as a consequence you may not distribute the
- Program at all. For example, if a patent license would not
- permit royalty-free redistribution of the Program by all those who
- receive copies directly or indirectly through you, then the only
- way you could satisfy both it and this License would be to refrain
- entirely from distribution of the Program.
-
- If any portion of this section is held invalid or unenforceable
- under any particular circumstance, the balance of the section is
- intended to apply and the section as a whole is intended to apply
- in other circumstances.
-
- It is not the purpose of this section to induce you to
- infringe any patents or other property right claims or to contest
- validity of any such claims; this section has the sole purpose
- of protecting the integrity of the free software distribution
- system, which is implemented by public license practices. Many
- people have made generous contributions to the wide range of
- software distributed through that system in reliance on consistent
- application of that system; it is up to the author/donor to decide
- if he or she is willing to distribute software through any other
- E.2.Terms and Conditions for Copying, Distribution, and Modification232
- _______________________________________________________________________
-
- system and a licensee cannot impose that choice.
-
- This section is intended to make thoroughly clear what is believed
- to be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
- certain countries either by patents or by copyrighted interfaces,
- the original copyright holder who places the Program under this
- License may add an explicit geographical distribution limitation
- excluding those countries, so that distribution is permitted only
- in or among countries not thus excluded. In such case, this
- License incorporates the limitation as if written in the body of
- this License.
-
- 9. The Free Software Foundation may publish revised and/or new
- versions of the General Public License from time to time. Such
- new versions will be similar in spirit to the present version, but
- may differ in detail to address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
- Program specifies a version number of this License which applies
- to it and ``any later version'', you have the option of following
- the terms and conditions either of that version or of any later
- version published by the Free Software Foundation. If the Program
- does not specify a version number of this License, you may choose
- any version ever published by the Free Software Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
- programs whose distribution conditions are different, write to the
- author to ask for permission. For software which is copyrighted
- by the Free Software Foundation, write to the Free Software
- Foundation; we sometimes make exceptions for this. Our decision
- will be guided by the two goals of preserving the free status of
- all derivatives of our free software and of promoting the sharing
- and reuse of software generally.
-
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
- WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
- LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
- HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM ``AS IS'' WITHOUT
- WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
- BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
- QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
- PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
- SERVICING, REPAIR OR CORRECTION.
- E.3. Appendix: How to Apply These Terms to Your New Programs 233
- _______________________________________________________________________
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO
- IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO
- MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE,
- BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
- INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
- INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS
- OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
- YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH
- ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
-
- E.3 Appendix: How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
- possible use to the public, the best way to achieve this is to make it
- free software which everyone can redistribute and change under these
- terms.
- To do so, attach the following notices to the program. It is
- safest to attach them to the start of each source file to most
- effectively convey the exclusion of warranty; and each file should
- have at least the ``copyright'' line and a pointer to where the full
- notice is found.
-
- <one line to give the program's name and a brief idea of what
- it does.> Copyright cO19yy <name of author>
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of
- the License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be
- useful, but WITHOUT ANY WARRANTY; without even the implied
- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- PURPOSE. See the GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public
- License along with this program; if not, write to the Free
- Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
- USA.
-
- Also add information on how to contact you by electronic and paper
- mail.
- If the program is interactive, make it output a short notice like
- this when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- E.3. Appendix: How to Apply These Terms to Your New Programs 234
- _______________________________________________________________________
-
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
- type `show w'. This is free software, and you are welcome
- to redistribute it under certain conditions; type `show c' for
- details.
-
- The hypothetical commands `show w' and `show c' should show the
- appropriate parts of the General Public License. Of course, the
- commands you use may be called something other than `show w' and `show
- c'; they could even be mouse-clicks or menu items--whatever suits your
- program.
- You should also get your employer (if you work as a programmer)
- or your school, if any, to sign a ``copyright disclaimer'' for the
- program, if necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in
- the program `Gnomovision' (which makes passes at compilers)
- written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-
- This General Public License does not permit incorporating your
- program into proprietary programs. If your program is a subroutine
- library, you may consider it more useful to permit linking proprietary
- applications with the library. If this is what you want to do, use
- the GNU Library General Public License instead of this License.
-
-
-
-
-
-
- Index
-
-
-
- *, 106 /proc, 102
- - to begin command options, 98 mounting of, 157
- .bash_profile, 135 /sbin, 102
- .bashrc, 135 /tmp, 102
- .profile, 135 /usr, 102
- .tcshrc, 135 /usr/X11R6/lib/X11/XF86Config,
- / 171
- in pathnames, 90 /usr/X386, 103
- root directory name, 90 /usr/etc, 103
- /Image, 141 /urs/g++-include, 103
- /bin/bash, 105 /usr/include, 103
- /bin/csh, 105 /usr/lib, 103
- /bin/sh, 105 /usr/local, 104
- /bin/tcsh, 105 /usr/man, 104
- /dev/console, 101 /usr/src, 104
- /dev/cua, 101 /var, 104
- /dev/hd, 101 /var/adm, 104
- /dev/lp, 101 /var spool, 104
- /dev/null, 101 /vmlinux, 141
- /dev/pty, 102 /zImage, 141
- /dev/tty, 102 <, 110
- /dev/ttyS, 101 >, 109
- /etc, 102 ?, 107
- /etc/Image, 141 ~
- csh.login, 135 to refer to home directory,
- /etc/fstab, 157 92
- /etc/getty, 160 386BSD, 26
- /etc/group
- format of, 147 account
- /etc/host.conf, 193 creating, 86
- /etc/hosts, 192 addgroup, 147
- /etc/init, 160 adding users, 144
- /etc/inittab, 160 with adduser, 146
- /etc/networks, 192 with useradd, 146
- /etc/passwd, 145 adduser, 146
- /etc/profile, 135 afio, 151
- /etc/rc, 160 alpha, 20
- /etc/rc.local, 160 archiving files, 147--150
- /etc/resolve.conf, 193 argument
- /etc/zImage, 141 command
- /home, 102 defined, 88
- /lib, 102 backflops, 151
-
-
- 235
- INDEX 236
- _______________________________________________________________________
-
- background process, 118 grouping with shell scripts,
- backgrounding jobs, 120 131
- backups, 151 summary of basic, 98--100
- incremental, 151 commercial support, 37
- multi-volume, 151 compress, 149
- to floppy disk, 151 compressing files, 147--150
- bash, 105 configuration scripts
- BBS list, 222--226 for TCP/IP, 189
- BBS software, 15 console
- FidoNet, 15 defined, 87
- beta, 21 device name for, 101
- bg, 122 virtual, 87
- /bin, 100 copy files, 96
- books, 206--210 copying Linux, 18--19, 26,
- boot floppy, 69--70, 162 227--234
- creating, 141 copyright, 18--19, 227--234
- boot scripts, 160 core dumps, 6
- booting, 56, 141--143 cp, 96, 99
- from maintenance floppy, 162 csh, 8
- problems, 72--74, 81, 82 current working directory
- with LILO, 142--143 defined, 90
- booting Linux
- with boot floppy, 141 databases, 17
- booting non-Linux systems, 142 debugging
- Bourne again shell, 105 core dumps, 6
- Bourne shell, 8, 105 delete
- broadcast address directory, 97
- defined, 188 files, 96
- bugs, 20 deleting users, 146
- deluser, 146
- C News, 200 /dev, 101
- C Shell (csh), 8, 105 /dev/sd, 101
- cat, 100 /dev/sr, 101
- to view file contents, 97 /dev/st, 101
- cd, 92--93, 98 development
- chfn, 146 alpha, 20
- chmod, 115 beta, 21
- chsh, 146 conventions, 21
- client device driver, 101
- news devices
- defined, 200 /dev/console, 101
- Coherent, 27 /dev/cua, 101
- command /dev/hd, 101
- argument /dev/lp, 101
- defined, 88 /dev/null, 101
- defined, 88 /dev/pty, 102
- command not found error message, /dev/sd, 101
- 88 /dev/sr, 101
- commands /dev/st, 101
- - to begin options, 98 /dev/tty, 102
- INDEX 237
- _______________________________________________________________________
-
- /dev/ttyS, 101 nesting, 90
- accessing, 101 parent, 90
- console, 101 .. to refer to, 93
- fd, 101 permisions
- floppy disk, 101 execute, 113
- hard drives, 101 read, 113
- null, 101 write, 113
- parallel ports, 101 permissions
- pseudo-terminals, 102 changing, 115
- SCSI, 101 dependencies of, 114
- serial ports, 101 root
- virtual consoles, 102 defined, 90
- dip, 194 structure, 90
- chat script for, 197--199 moving around in with cd,
- connecting to SLIP server 92
- with, 197--199 tree, 90
- dynamic IP address with, 196 working
- static IP address with, 195 defined, 90
- directory disabling users, 146
- . to refer to, 93 disasters
- /etc, 102 recovery from, 162--164
- /home, 102 with maintenance floppy,
- /lib, 102 162
- /proc, 102 distributions, 21, 40--50
- /sbin, 102 Internet, getting from the,
- /tmp, 102 41
- /usr, 102 list, 211--213
- /usr/X386, 103 mail order, 42
- /usr/bin, 103 online sources, 42
- /usr/etc, 103 documentation, 203--210
- /urs/g++-include, 103 books, 33, 206--210
- /usr/include, 103 Frequently Asked Questions,
- /usr/lib, 103 203
- /usr/local, 104 HOWTO documents, 204
- /usr/man, 104 info files, 9
- /usr/src, 104 Linux Documentation Project,
- /var, 104 33, 205--206
- /var/adm, 104 Linux Software Map, 17
- /var spool, 104 online, 32, 203--205
- /bin, 100 FAQ, 33
- creating, 95 HOWTO documents, 33
- current working texinfo, 9
- defined, 90 Doom, 17
- defined, 89
- delete, 97 e-mail, 200
- /dev, 101 mailer
- home defined, 200
- ~ to refer to, 92 transport
- defined, 90 defined, 200
- listing contents of, 93--95 e2fsck, 158, 163
- INDEX 238
- _______________________________________________________________________
-
- echo, 100 backing up, 151
- editor compressing, 147--150
- defined, 123 defined, 89
- editors, 7 device, 101
- efsck, 159 hidden
- elm, 200 not matched by wildcards,
- Emacs, 7, 123 107
- emergencies inode numbers of, 115
- recovery from, 162--164 links, 115--117
- with maintenance floppy, listing, 93--95
- 162 listing permissions of with
- end-of-text signal, 109 ls, 113
- environment MS-DOS, 184
- customizing, 130--135 owership of by group, 112
- variables owership of by user, 112
- PATH, 134 permisions
- EOT (end of text) signal, 109 execute, 113
- error messages read, 113
- error messages write, 113
- command not found, 88 permissions
- ethernet, 14 changing, 115
- supported cards, 186 defined, 112
- executable dependencies of, 114
- defined, 94 group, 147
- executables, 6 interpreting, 113
- exit, 89 permissions of, 112--115
- export, 133 recovering, 164
- viewing contents of, 97
- FAQ, 33 filesystem
- fdisk, 55, 60--63 exploring, 100--104
- under MS-DOS, 55 filesystems, 5, 52, 53, 156--159
- features /etc/fstab, 157
- kernel, 5--6 checking, 158
- system, 5--6 creating, 64--65
- fg, 122 fixing corrupted, 163
- FidoNet, 15 mounting, 156--158
- file on floppy disk, 151
- copy, 96 root, 52
- delete, 96 unmounting, 158
- executable unmounting with shutdown or
- defined, 94 halt, 158
- move, 96 filter
- filename defined, 110
- defined, 89 find
- filenames for incremental backups, 151
- wildcard characters in, 106-- FIPS, 54
- 108 floating-point math, 5
- files floppy disk
- appeding to, 112 boot/root, 162
- archiving, 147--150 device names for, 101
- INDEX 239
- _______________________________________________________________________
-
- maintenance, 162 device names for, 101
- unmounting, 152 hardware
- floppy disks problems, 74--79
- as backup medium, 151 conflicts, 75--76
- file systems on, 151 hard drive, 76--78
- forground process, 118 SCSI, 78--79
- free software, 18 hardware support, 27--32
- Free Software Foundation, 18, CD-ROM, 31
- 227 controller, 29
- Frequently Asked Questions, 203 CPU, 28
- fsck, 159, 163 drive space, 29
- FTP ethernet cards, 31, 186
- anonymous, 41 hard drive, 29
- archive site list, 220 memory, 28
- using, 214--220 mice, 30
- ftpmail, 220 modems, 31
- fullname monitor, 30
- setting with chfn, 146 motherboard, 28
- functionality, 22 printers, 31
- SCSI, 29, 31
- games, 17 tape drives, 31
- Doom, 17 video card, 30, 166
- gateway address help
- defined, 188 getting, 37--39
- gcc online, 97
- upgrading, 155 home directory
- gdb, 11 ~ to refer to, 92
- General Public License, 18--19, defined, 90, 145
- 227--234 hostname
- getting help, 32 hostname, 161
- getty, 160 defined, 86
- GNU, 7 setting, 161, 193
- General Public License, 18-- hostname, 193
- 19, 227--234 HOWTO documents, 33, 204
- gprof, 11 HURD, 27
- grep, 100
- groff, 8 ifconfig, 190
- group ID inetd, 191
- defined, 144 Ingres, 17
- groupadd, 147 init, 160
- groups, 112, 147 initialization files
- adding, 147 for shells, 135
- deleting, 147 initialization scripts
- groups, 147 for shells, 135
- gzip, 149 inittab, 160
- INN, 200
- hacker, 20 inode number
- halt, 144 defined, 115
- hard drive input
- problems, 77 redirecting, 110
- hard drives
- INDEX 240
- _______________________________________________________________________
-
- installation, 40--84 LaTeX, 8
- boot floppy, 69--70 libraries, 11
- booting Linux, 56 fixing corrupted, 164
- LILO, 69--70 shared, 6
- mke2fs, 64--65 upgrading, 154
- mkswap, 63--64 LILO, 69--70, 142--143
- other procedures, 70 as boot loader, 142
- overview, 50--51 installing, 142
- preparation, 50--56 problems booting, 72
- problems, 71--84 problems installing, 83
- booting, 72--74, 81, 82 selecting default operating
- errors, 79 system for, 143
- file permissions, 84 links, 115--117
- hardware, 74--79 display number of, 116
- LILO, 83 hard, 115
- logging in, 83 symbolic, 117
- media errors, 79 Linux, 1--234
- postinstallation, 81--84 and cost, 26
- repartitioning, 52, 54--56 bugs, 20
- Internet, 14, 41 commercial support, 37
- mailing lists, 36 copying, 26
- IP address copyright, 18--19, 227--234
- defined, 187 development, 20
- IRQ, 75 distributions, 21
-
- job getting,h41istory, 3
- background, 118, 120, 122 installing, 40--84
- kill, 120 philosophy, 19--23
- defined, 118 pronunciation, 1
- forground, 118 sources of information, 32
- interupt, 119 stability, 26
- inturpting, 119 system features, 5--6
- kill, 119 Linux Documentation Project, 33,
- restarting, 122 205--206
- stopping, 121 Linux Journal, 206
- suspended, 119 Linux Software Map, 17, 204
- job control, 5, 117--123 Linux-Activists mailing list, 36
- jobs, 120 listing directory contents, 93--
- 95
- kernel logging in, 86
- compiling, 154 problems, 83
- compiling compressed image, logging out
- 154 with exit command, 89
- features, 5--6 login, 86
- sources for, 153 login name
- upgrading, 153 defined, 86
- kernel image login shell
- compressed, 141 defined, 135, 145
- file name of, 141 setting with chsh, 146
- kill, 120 ls, 93--95, 98
- INDEX 241
- _______________________________________________________________________
-
- listing file permissions nameserver address
- with, 113 defined, 188
- NET-2, 185
- mail order, 42 support for serial line In-
- mailer ternet protocol (SLIP),
- for e-mail, 200 185
- mailers, 14 NetBSD, 26
- mailing lists, 36 netstat, 194
- Linux-Activists, 36 network address
- mailx, 200 defined, 188
- maintenance floppy, 162 network mask
- man, 97, 99 defined, 187
- manual pages, 97 networking, 5, 14--15
- master boot record, 52 and X Windows, 14
- Mbase, 17 ethernet cards, supported,
- METAFONT, 11 31, 186
- Microsoft Windows, 16 FTP, 14
- emulator, 185 NET-2, 185
- Minix, 3, 27 news, 14, 200--202
- mkdir, 95, 99 NFS, 14, 191
- mke2fs, 64--65 NNTP, 14
- for floppy disk, 151 PPP, 195
- mkswap, 63--64, 159 SLIP, 14, 185
- money, 26 TCP/IP, 185--199
- more, 97, 99 UUCP, 14, 199--200
- Motif, 13 news, 200--202
- mount, 157 client
- mounting floppy disk with, defined, 200
- 151 news readers
- to mount MS-DOS partition, defined, 200
- 184 rn, 200
- mount point rn, 200
- defined, 152 server
- move files, 96 C News, 200
- MS-DOS, 24--25 defined, 200
- accessing files from, 16, 184 INN, 200
- emulator, 16, 184 UUCP, 199
- mounting partion under Linux, news readers, 14
- 184 defined, 200
- repartitioning, 55 NFS, 191
- running programs from Linux, null file, 101
- 184
- using Mtools to access files, operating sytems
- 184 booting non-Linux, 142, 143
- multitasking, 5 OS/2, 25
- defined, 86 output
- multiuser redirecting, 109
- defined, 86
- mv, 96, 99 parallel port
- device name for, 101
- named, 192 parent directory, 90
- INDEX 242
- _______________________________________________________________________
-
- .. to refer to, 93 core dumps, 6
- partition table, 52 languages, 11
- partitions, 52, 53 libraries, 11
- fdisk, 55, 60--63 UNIX, 12
- Linux, 58--60 utilities, 11
- size, 54 protected mode, 6
- passwd, 89, 146 ps, 118
- password pseudo-terminals, 102
- changing with passwd, 89
- defined, 86 RAWRITE.EXE, 41
- fixing root, 163 rc, 160
- password file files
- format of, 145 defined, 189
- pathname for TCP/IP, 189
- absolute, 92 rc.inet, 189
- defined, 89 rc.inet1, 189
- full, 92 sample, 190
- relative, 91 rc.inet2, 189, 191
- permissions sample, 191
- changing, 115 rc.local, 160
- defined, 112 rc.net, 189
- dependencies of, 114 rdev, 141
- execute, 113 reading
- for shell scripts, 132 suggested, 206--210
- group, 147 redirection
- interpreting, 113 non-destructive, 112
- of files, 112--115 standard input, 109
- problems, 84 standard output, 109
- read, 113 repartitioning, 54--56
- write, 113 concepts, 52
- pipelining fdisk, 55
- defined, 111 under MS-DOS, 55
- pipes FIPS, 54
- creating, 111 rm, 96, 99
- using, 110--112 rmdir, 97, 99
- POSIX.1, 5 rn, 200
- Postgres, 17 root
- PPP, 5, 195 fixing password for, 163
- process root account, 137--139
- background, 118 eithical issues, 139
- kill, 120 privleges of, 138
- defined, 118 using different prompt for,
- forground, 118 138
- ID root device
- defined, 118 setting name of with rdev,
- interupt, 119 141
- interupting, 119 root directory
- kill, 119 defined, 90
- ps to list, 118 root filesystem, 52
- programming, 11--12 route, 190
- INDEX 243
- _______________________________________________________________________
-
- entry in /etc/networks re- device names for, 196
- quired for, 192 dynamic IP address with dip,
- routed, 191 196
- static IP address with dip,
- scientific software, 17 195
- SCSI static IP address with slat-
- problems, 78--79 tach, 196
- SCSI devices Smail, 200
- names for, 101 software, 6--17
- security, 139 bash, 8
- sendmail, 200 installing, 152--156
- serial line Internet protocol, tcsh, 8
- 185, 194--199 upgrading, 152--156
- serial ports where to find releases, 156
- device names for, 101 sound support, 17
- setenv, 133 sources of information, 203--210
- Seyon, 15 stability, 26
- shareware, 18 standard input, 108--112
- shell script, 7 redirecting, 110
- defined, 131 standard output, 108--112
- shell scripts redirecting, 109
- comments in, 132 standards, 5
- defined, 105 startup scripts, 160
- initializtion, 135 slattach
- permissions for, 132 static IP addresses with, 196
- variables in, 132 stdin, 108
- shell variables stdout, 108
- exporting to environment, 133 superblock
- shells, 7, 105 defined, 163
- Bourne again shell, 105 fixing corrupted, 163
- Bourne shell, 105 swap file, 53, 159--160
- C shell, 105 deleting, 160
- defined, 87 swap partition
- initializtion files, 135 in /etc/fstab, 157
- job control provided by, 117 swap space, 6, 53
- prompt, 88 creating, 63--64
- variables creating temporary, 160
- defined, 132 swapoff, 160
- wildcard characters for, 106- swapon, 157, 159
- -108 syslogd, 191
- wildcard expansion, 106 system administration
- shutdown command, 71, 143 adding users, 144
- shutting down, 143--144 booting Linux, 141--143
- Slackware duties, 140
- getting, 43--50 security issues, 139
- installing, 66--69 shutting down, 143--144
- slattach, 194 system security, 139
- SLIP, 5, 14, 185, 194--199 system-defined accounts
- connecting to servier with root, 137
- dip, 197 Tanenbaum, Andy, 3
- INDEX 244
- _______________________________________________________________________
-
- tar, 148 TeX, 8
- TCP/IP, 5, 14--15, 185--199 texinfo, 9
- /etc/host.conf, 193 text editor
- /etc/hosts, 192 comparing, 123
- /etc/networks, 192 defined, 123
- /etc/resolve.conf, 193 text editors, 7
- broadcast address, 188 text processing, 8--11
- configuration scripts for, tin, 200
- 189 Torvalds, Linus, 3, 20
- configuring, 186, 187 transport
- debugging, 193 for e-mail, 200
- displaying routing tables, trouble
- 194 running into, 71--84
- gateway address, 188
- hardware requirements for, UID
- 186 defined, 144
- ifconfig, 190 umount, 158
- inetd, 191 unmounting floppy disks with,
- IP address, 187 152
- named, 192 UNIX
- nameserver address, 188 basic concepts, 86--92
- NET-2 implementation of, 185 commercial, 19, 22, 25--27
- network address, 188 directory structure, 90
- network mask, 187 for the PC, 25--27
- over serial line, 194--199 free implementations, 26
- point-to-point connection, manual pages for, 97
- 195 multitasking
- PPP, 195 defined, 86
- rc.inet, 189 popularity, 3
- rc.inet1, 189 wizards, 1
- sample, 190 unmounting filesystems, 158
- rc.inet2, 189 upgrading, 23
- sample, 191 USENET, 200--202
- rc.net, 189 Linux-related newsgroups, 34
- route, 190 posting tips, 38
- routed, 191 user account
- SLIP, 194--199 creating, 86
- device names for, 196 user ID
- dynamic IP address with defined, 144
- dip, 196 useradd, 146
- static IP address with dip, userdel, 146
- 195 username
- static IP address with defined, 144
- slattach, 196 users
- syslogd, 191 adding, 144
- troubleshooting, 193 adding with adduser, 146
- Tcsh, 105 adding with useradd, 146
- tcsh, 105 changing fullname for, 146
- telecommunications, 15 changing login shell for, 146
- term, 15 deleting, 146
- INDEX 245
- _______________________________________________________________________
-
- disabling, 146 defined, 90
- full name of, 145
- group ID of, 144 X11R6, 165
- home directory of, 145 XF86Config, 171
- in groups, 112 XFree86, 12, 165
- list groups for, 147 configuration file for, 171
- login shell of, 145 configuring, 170
- password of, 145 hardware requirements for,
- setting attributes for, 146 166
- setting guidelines for, 140 installing, 168
- setting password for, 146 RAM requirements for, 168
- system security and, 139 video chipsets supported by,
- user ID of, 144 166
- username of, 144 xfsck, 159
- UUCP, 14, 199--200 X Window System, 12--13, 165--184
- defined, 165
- variables
- environment, 133
- in shell scripts, 132
- shell, 132
- vendor
- list, 211--213
- vi, 7, 123--130
- changing text, 127--128
- command mode, 124
- deleting text, 126--127
- edit mode, 124
- including files, 129
- inserting text, 125--126
- last line mode, 124
- moving cursor, 128
- quitting, 128
- saving changes, 128
- shell commands from, 130
- starting, 124
- switching files, 129
- writing changes, 128
- virtual consoles, 5, 102
- Volkerding, Patrick, 43
-
- wildcard characters
- *, 106
- ?, 107
- defined, 106
- in filnames, 106--108
- wildcard expansion
- defined, 106
- Windows NT, 25
- WINE, 16
- word processing, 10
- working directory
-
-
-
-
-
-
-
-
-
-